提交merge1.3

This commit is contained in:
2025-12-27 15:31:06 +08:00
parent cbd3e7f981
commit 79ea4ed4f7
148 changed files with 6722 additions and 10861 deletions

View File

@@ -11,7 +11,6 @@ public enum TenantOptionDict {
* 医院名称 * 医院名称
*/ */
YB_HOSPITAL_NAME("hospitalName", "医保-医院名称", 0), YB_HOSPITAL_NAME("hospitalName", "医保-医院名称", 0),
/** /**
* 医保-医疗机构等级(3101接口) * 医保-医疗机构等级(3101接口)
*/ */
@@ -24,37 +23,30 @@ public enum TenantOptionDict {
* 电子发票appid * 电子发票appid
*/ */
EINVOICE_APP_ID("app_id", "电子发票-appid", 3), EINVOICE_APP_ID("app_id", "电子发票-appid", 3),
/** /**
* 电子发票key * 电子发票key
*/ */
EINVOICE_KEY("key", "电子发票-key", 4), EINVOICE_KEY("key", "电子发票-key", 4),
/** /**
* 电子发票url * 电子发票url
*/ */
EINVOICE_URL("url", "电子发票-url", 5), EINVOICE_URL("url", "电子发票-url", 5),
/** /**
* 医保开关 * 医保开关
*/ */
YB_SWITCH("yb_switch", "医保开关", 6), YB_SWITCH("yb_switch", "医保开关", 6),
/** /**
* 电子地址 * 电子地址
*/ */
ELE_ADDRESS("eleAddress", "电子处方-请求地址", 22), ELE_ADDRESS("eleAddress", "电子处方-请求地址", 22),
/** /**
* 服务地址 * 服务地址
*/ */
ADDRESS("address", "服务地址", 23), ADDRESS("address", "服务地址", 23),
/** /**
* 超时时间 * 超时时间
*/ */
TIME("time", "超时时间", 24), TIME("time", "超时时间", 24),
/** /**
* 是否加密 * 是否加密
*/ */
@@ -63,32 +55,26 @@ public enum TenantOptionDict {
* 医保区划 * 医保区划
*/ */
YB_INSUPLC_ADMDVS("insuplc_admdvs", "医保-区划", 26), YB_INSUPLC_ADMDVS("insuplc_admdvs", "医保-区划", 26),
/** /**
* 电子处方appId * 电子处方appId
*/ */
ELE_PRE_APP_ID("pre_app_id", "电子处方-appId", 27), ELE_PRE_APP_ID("pre_app_id", "电子处方-appId", 27),
/** /**
* 电子处方appSecret * 电子处方appSecret
*/ */
ELE_PRE_APP_SECRET("pre_app_secret", "电子处方-appSecret", 28), ELE_PRE_APP_SECRET("pre_app_secret", "电子处方-appSecret", 28),
/** /**
* 电子处方私钥 * 电子处方私钥
*/ */
ELE_APP_PRVKEY("APP_PRVKEY", "电子处方-私钥", 29), ELE_APP_PRVKEY("APP_PRVKEY", "电子处方-私钥", 29),
/** /**
* 电子处方公钥 * 电子处方公钥
*/ */
ELE_PLAF_PUBKEY("PLAF_PUBKEY", "电子处方-公钥", 30), ELE_PLAF_PUBKEY("PLAF_PUBKEY", "电子处方-公钥", 30),
/** /**
* 医院等级 * 医院等级
*/ */
EINVOICE_HOSPITAL_LV("hospital_lv", "电子发票-医院等级", 39), EINVOICE_HOSPITAL_LV("hospital_lv", "电子发票-医院等级", 39),
/** /**
* 无视LIS&PACS报错 * 无视LIS&PACS报错
*/ */
@@ -160,27 +146,14 @@ public enum TenantOptionDict {
/** /**
* 电子发票开关 * 电子发票开关
*/ */
<<<<<<< HEAD
INVOICE_SWITCH("invoiceSwitch", "电子发票开关 (0:关闭 1:开启)", 56),
=======
INVOICE_SWITCH("invoiceSwitch", "电子发票开关", 56), INVOICE_SWITCH("invoiceSwitch", "电子发票开关", 56),
>>>>>>> v1.3
/** /**
* 医嘱定价来源 * 医嘱定价来源
*/ */
ORDER_PRICING_SOURCE("orderPricingSource", "定价来源 batchSellingPrice/retailPrice", 57), ORDER_PRICING_SOURCE("orderPricingSource", "定价来源 batchSellingPrice/retailPrice", 57),
/** /**
* 三方支付(签到) * 三方支付(签到)
*/ */
<<<<<<< HEAD
THREE_PART_SIGN_URL("threePartSignUrl", "三方支付GET请求", 58),
/**
* 三方支付(消费)
*/
THREE_PART_PAY_URL("threePartPayUrl", "三方支付GET请求", 59),
=======
THREE_PART_SIGN_URL("threePartSignUrl", "三方支付【签到】请求路径", 58), THREE_PART_SIGN_URL("threePartSignUrl", "三方支付【签到】请求路径", 58),
/** /**
* 三方支付(签到) * 三方支付(签到)
@@ -210,14 +183,9 @@ public enum TenantOptionDict {
* 三方支付(消费) * 三方支付(消费)
*/ */
THREE_PART_PAY_MAPPING_METHOD("threePartPayMappingMethod", "三方支付【消费】请求方式", 65), THREE_PART_PAY_MAPPING_METHOD("threePartPayMappingMethod", "三方支付【消费】请求方式", 65),
>>>>>>> v1.3
/** /**
* 三方支付(退费) * 三方支付(退费)
*/ */
<<<<<<< HEAD
THREE_PART_RETURN_URL("threePartReturnUrl", "三方支付GET请求", 60),
=======
THREE_PART_RETURN_URL("threePartReturnUrl", "三方支付【退费】请求路径", 66), THREE_PART_RETURN_URL("threePartReturnUrl", "三方支付【退费】请求路径", 66),
/** /**
* 三方支付(退费) * 三方支付(退费)
@@ -231,14 +199,9 @@ public enum TenantOptionDict {
* 三方支付(退费) * 三方支付(退费)
*/ */
THREE_PART_RETURN_MAPPING_METHOD("threePartReturnMappingMethod", "三方支付【退费】请求方式", 69), THREE_PART_RETURN_MAPPING_METHOD("threePartReturnMappingMethod", "三方支付【退费】请求方式", 69),
>>>>>>> v1.3
/** /**
* 三方支付(隔天退费) * 三方支付(隔天退费)
*/ */
<<<<<<< HEAD
THREE_PART_NEXT_DAY_RETURN_URL("threePartNextDayReturnUrl", "三方支付GET请求", 61),
=======
THREE_PART_NEXT_DAY_RETURN_URL("threePartNextDayReturnUrl", "三方支付【隔天退费】请求路径", 70), THREE_PART_NEXT_DAY_RETURN_URL("threePartNextDayReturnUrl", "三方支付【隔天退费】请求路径", 70),
/** /**
* 三方支付(隔天退费) * 三方支付(隔天退费)
@@ -252,14 +215,9 @@ public enum TenantOptionDict {
* 三方支付(隔天退费) * 三方支付(隔天退费)
*/ */
THREE_PART_NEXT_DAY_RETURN_MAPPING_METHOD("threePartNextDayReturnMappingMethod", "三方支付【隔天退费】请求方式", 73), THREE_PART_NEXT_DAY_RETURN_MAPPING_METHOD("threePartNextDayReturnMappingMethod", "三方支付【隔天退费】请求方式", 73),
>>>>>>> v1.3
/** /**
* 三方支付路径(支付结果查询) * 三方支付路径(支付结果查询)
*/ */
<<<<<<< HEAD
THREE_PART_PAY_QUERY_URL("threePartPayQueryUrl", "三方支付GET请求", 62),
=======
THREE_PART_PAY_QUERY_URL("threePartPayQueryUrl", "三方支付【支付结果查询】请求路径", 74), THREE_PART_PAY_QUERY_URL("threePartPayQueryUrl", "三方支付【支付结果查询】请求路径", 74),
/** /**
* 三方支付(支付结果查询) * 三方支付(支付结果查询)
@@ -273,14 +231,9 @@ public enum TenantOptionDict {
* 三方支付(支付结果查询) * 三方支付(支付结果查询)
*/ */
THREE_PART_PAY_QUERY_MAPPING_METHOD("threePartPayQueryMappingMethod", "三方支付【支付结果查询】请求方式", 77), THREE_PART_PAY_QUERY_MAPPING_METHOD("threePartPayQueryMappingMethod", "三方支付【支付结果查询】请求方式", 77),
>>>>>>> v1.3
/** /**
* 三方支付路径(退费结果查询) * 三方支付路径(退费结果查询)
*/ */
<<<<<<< HEAD
THREE_PART_RETURN_QUERY_URL("threePartReturnQueryUrl", "三方支付GET请求", 63),
=======
THREE_PART_RETURN_QUERY_URL("threePartReturnQueryUrl", "三方支付【退费结果查询】请求路径", 78), THREE_PART_RETURN_QUERY_URL("threePartReturnQueryUrl", "三方支付【退费结果查询】请求路径", 78),
/** /**
* 三方支付(退费结果查询) * 三方支付(退费结果查询)
@@ -294,19 +247,9 @@ public enum TenantOptionDict {
* 三方支付(退费结果查询) * 三方支付(退费结果查询)
*/ */
THREE_PART_RETURN_QUERY_MAPPING_METHOD("threePartReturnQueryMappingMethod", "三方支付【退费结果查询】请求方式", 81), THREE_PART_RETURN_QUERY_MAPPING_METHOD("threePartReturnQueryMappingMethod", "三方支付【退费结果查询】请求方式", 81),
>>>>>>> v1.3
/** /**
* 三方支付路径(隔天退费结果查询) * 三方支付路径(隔天退费结果查询)
*/ */
<<<<<<< HEAD
THREE_PART_NEXT_DAY_RETURN_QUERY_URL("threePartNextDayReturnQueryUrl", "三方支付GET请求", 64),
/**
* 三方支付参数
*/
THREE_PART_PARAM("threePartParam", "三方支付GET请求", 65);
=======
THREE_PART_NEXT_DAY_RETURN_QUERY_URL("threePartNextDayReturnQueryUrl", "三方支付【隔天退费结果查询】请求路径", 82), THREE_PART_NEXT_DAY_RETURN_QUERY_URL("threePartNextDayReturnQueryUrl", "三方支付【隔天退费结果查询】请求路径", 82),
/** /**
* 三方支付(隔天退费结果查询) * 三方支付(隔天退费结果查询)
@@ -321,7 +264,6 @@ public enum TenantOptionDict {
*/ */
THREE_PART_NEXT_DAY_RETURN_QUERY_MAPPING_METHOD("threePartNextDayReturnQueryMappingMethod", "三方支付【隔天退费结果查询】请求方式", THREE_PART_NEXT_DAY_RETURN_QUERY_MAPPING_METHOD("threePartNextDayReturnQueryMappingMethod", "三方支付【隔天退费结果查询】请求方式",
85), 85),
/** /**
* 三方支付(签出) * 三方支付(签出)
*/ */
@@ -338,32 +280,26 @@ public enum TenantOptionDict {
* 三方支付(签出) * 三方支付(签出)
*/ */
THREE_PART_SIGN_OUT_MAPPING_METHOD("threePartSignOutMappingMethod", "三方支付【签出】请求方式", 89), THREE_PART_SIGN_OUT_MAPPING_METHOD("threePartSignOutMappingMethod", "三方支付【签出】请求方式", 89),
/** /**
* 三方支付(签出) * 三方支付(签出)
*/ */
YB_INPATIENT_SETTLEMENT_UP_URL("ybInpatientSetlUp", "选填4101或4101A", 90), YB_INPATIENT_SETTLEMENT_UP_URL("ybInpatientSetlUp", "选填4101或4101A", 90),
/** /**
* PACS查看报告地址 * PACS查看报告地址
*/ */
PACS_REPORT_URL("pacsReportUrl", "PACS查看报告地址", 91), PACS_REPORT_URL("pacsReportUrl", "PACS查看报告地址", 91),
/** /**
* LIS查看报告地址 * LIS查看报告地址
*/ */
LIS_REPORT_URL("lisReportUrl", "LIS查看报告地址", 92), LIS_REPORT_URL("lisReportUrl", "LIS查看报告地址", 92),
/** /**
* 开药时药房允许多选开关 * 开药时药房允许多选开关
*/ */
PHARMACY_MULTIPLE_CHOICE_SWITCH("pharmacyMultipleChoiceSwitch", "开药时药房允许多选开关", 93), PHARMACY_MULTIPLE_CHOICE_SWITCH("pharmacyMultipleChoiceSwitch", "开药时药房允许多选开关", 93),
/** /**
* PEIS服务地址 * PEIS服务地址
*/ */
PEIS_SERVER_URL("peisServerUrl", "PEIS服务地址", 94); PEIS_SERVER_URL("peisServerUrl", "PEIS服务地址", 94);
>>>>>>> v1.3
private final String code; private final String code;
private final String name; private final String name;

View File

@@ -117,8 +117,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
*/ */
@Override @Override
public List<EncounterPatientPrescriptionDto> getEncounterPatientPrescription(Long encounterId) { public List<EncounterPatientPrescriptionDto> getEncounterPatientPrescription(Long encounterId) {
List<EncounterPatientPrescriptionDto> prescriptionDtoList = List<EncounterPatientPrescriptionDto> prescriptionDtoList
outpatientChargeAppMapper.selectEncounterPatientPrescription(encounterId, = outpatientChargeAppMapper.selectEncounterPatientPrescription(encounterId,
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.MEDICATION.getValue(),
ChargeItemContext.DEVICE.getValue(), ChargeItemContext.REGISTER.getValue(), ChargeItemContext.DEVICE.getValue(), ChargeItemContext.REGISTER.getValue(),
ChargeItemStatus.PLANNED.getValue(), ChargeItemStatus.BILLABLE.getValue(), ChargeItemStatus.PLANNED.getValue(), ChargeItemStatus.BILLABLE.getValue(),
@@ -214,8 +214,6 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
} }
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)); return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null));
} }
<<<<<<< HEAD
=======
/** /**
* 根据就诊id查询患者处方列表并新增字段应收金额实收金额优惠金额折扣率 * 根据就诊id查询患者处方列表并新增字段应收金额实收金额优惠金额折扣率
@@ -257,7 +255,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
* *
* @param discountRate 折扣率 * @param discountRate 折扣率
* @return 调整后的折扣率0.05的倍数) * @return 调整后的折扣率0.05的倍数)
**/ *
*/
private String returnDiscountRate(BigDecimal discountRate) { private String returnDiscountRate(BigDecimal discountRate) {
BigDecimal compareValue = BigDecimal.valueOf(0.05); BigDecimal compareValue = BigDecimal.valueOf(0.05);
BigDecimal remainder = discountRate.remainder(compareValue); BigDecimal remainder = discountRate.remainder(compareValue);
@@ -278,5 +277,4 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
return df.format(reActuarial); return df.format(reActuarial);
} }
} }
>>>>>>> v1.3
} }

View File

@@ -16,7 +16,9 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class CurrentDayEncounterDto { public class CurrentDayEncounterDto {
/** 租户ID */ /**
* 租户ID
*/
private Integer tenantId; private Integer tenantId;
/** /**
@@ -134,43 +136,5 @@ public class CurrentDayEncounterDto {
* 电话 * 电话
*/ */
private String phone; private String phone;
<<<<<<< HEAD
/**
* 退号日期/时间
*/
private Date returnDate;
/**
* 退号原因
*/
private String returnReason;
/**
* 退号操作人
*/
private String operatorName;
/**
* 退号操作工号(用户账号)
*/
private String operatorId;
/**
* 退款金额
*/
private BigDecimal refundAmount;
/**
* 合同编码(费用性质代码)
*/
private String contractNo;
/**
* 退款方式(多个支付方式用逗号分隔)
*/
private String refundMethod;
=======
>>>>>>> v1.3
} }

View File

@@ -23,142 +23,191 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class EncounterPatientPrescriptionDto { public class EncounterPatientPrescriptionDto {
/** 收费项目类型 */ /**
* 收费项目类型
*/
private Integer contextEnum; private Integer contextEnum;
private String contextEnum_enumText; private String contextEnum_enumText;
/** 收费状态 */ /**
* 收费状态
*/
private Integer statusEnum; private Integer statusEnum;
private String statusEnum_enumText; private String statusEnum_enumText;
/** 就诊ID */ /**
* 就诊ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long encounterId; private Long encounterId;
/** 患者id */ /**
* 患者id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long patientId; private Long patientId;
/** ID */ /**
* ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long id; private Long id;
/** 开立科室 */ /**
* 开立科室
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long requestingOrgId; private Long requestingOrgId;
/** 数量 */ /**
* 数量
*/
private Long quantityValue; private Long quantityValue;
/** 单位 */ /**
* 单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String quantityUnit; private String quantityUnit;
private String quantityUnit_dictText; private String quantityUnit_dictText;
/** 单价 */ /**
* 单价
*/
private BigDecimal unitPrice; private BigDecimal unitPrice;
/** 总价 */ /**
* 总价
*/
private BigDecimal totalPrice; private BigDecimal totalPrice;
/** 处方号 */ /**
* 处方号
*/
private String prescriptionNo; private String prescriptionNo;
/** 业务编码 */ /**
* 业务编码
*/
private String busNo; private String busNo;
/** 收款人ID */ /**
* 收款人ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
@Dict(dictCode = "id", dictTable = "adm_practitioner", dictText = "name") @Dict(dictCode = "id", dictTable = "adm_practitioner", dictText = "name")
private Long entererId; private Long entererId;
private String entererId_dictText; private String entererId_dictText;
/** 开立时间 */ /**
* 开立时间
*/
private Date enteredDate; private Date enteredDate;
/** 收费时间 */ /**
* 收费时间
*/
private Date billDate; private Date billDate;
/** 关联账户ID */ /**
* 关联账户ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long accountId; private Long accountId;
/** 物品编码 */ /**
* 物品编码
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long itemId; private Long itemId;
/** 物品名称 */ /**
* 物品名称
*/
private String itemName; private String itemName;
/** 特病标识 */ /**
* 特病标识
*/
@Dict(dictCode = "med_type") @Dict(dictCode = "med_type")
private String medTypeCode; private String medTypeCode;
private String medTypeCode_dictText; private String medTypeCode_dictText;
<<<<<<< HEAD /**
======= * 用法
*/
>>>>>>> v1.3
/** 用法 */
@Dict(dictCode = "method_code") @Dict(dictCode = "method_code")
private String methodCode; private String methodCode;
private String methodCode_dictText; private String methodCode_dictText;
<<<<<<< HEAD
private String dose;
@Dict(dictCode = "unit_code")
private String doseUnitCode;
/** 单次剂量单位 */
private String doseUnitCode_dictText;
/** 频次 */
private String rateCode;
=======
/** 剂量 */ /**
* 剂量
*/
private String dose; private String dose;
/** 剂量单位 */ /**
* 剂量单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String doseUnitCode; private String doseUnitCode;
private String doseUnitCode_dictText; private String doseUnitCode_dictText;
/** 频次 */ /**
* 频次
*/
private String rateCode; private String rateCode;
>>>>>>> v1.3 /**
/** 合同编码 */ * 合同编码
*/
private String contractNo; private String contractNo;
/** 医保编码 */ /**
* 医保编码
*/
private String ybNo; private String ybNo;
/** 合同名称 */ /**
* 合同名称
*/
private String contractName; private String contractName;
/** 服务所在表 */ /**
* 服务所在表
*/
private String serviceTable; private String serviceTable;
/** 服务所在表对应的id */ /**
* 服务所在表对应的id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long serviceId; private Long serviceId;
/** 付款id */ /**
* 付款id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long paymentId; private Long paymentId;
<<<<<<< HEAD /**
======= * 实收金额
/** 实收金额 */ */
private BigDecimal receivedAmount = BigDecimal.ZERO; private BigDecimal receivedAmount = BigDecimal.ZERO;
/** 优惠金额 */ /**
* 优惠金额
*/
private BigDecimal discountAmount = BigDecimal.ZERO; private BigDecimal discountAmount = BigDecimal.ZERO;
/** 应收金额 */ /**
* 应收金额
*/
private BigDecimal receivableAmount = BigDecimal.ZERO; private BigDecimal receivableAmount = BigDecimal.ZERO;
/** 折扣率 */ /**
* 折扣率
*/
@Dict(dictCode = "charge_discount") @Dict(dictCode = "charge_discount")
private String discountRate = "0"; private String discountRate = "0";
private String discountRate_dictText; private String discountRate_dictText;
>>>>>>> v1.3
} }

View File

@@ -188,8 +188,6 @@ public interface ICommonService {
* @return 诊疗项目 * @return 诊疗项目
*/ */
R<?> getActivityDefinition(); R<?> getActivityDefinition();
<<<<<<< HEAD
=======
/** /**
* 查询备份单号 * 查询备份单号
@@ -205,5 +203,4 @@ public interface ICommonService {
* @return 处理结果 * @return 处理结果
*/ */
R<?> lotNumberMatch(List<Long> encounterIdList); R<?> lotNumberMatch(List<Long> encounterIdList);
>>>>>>> v1.3
} }

View File

@@ -89,8 +89,6 @@ public class CommonServiceImpl implements ICommonService {
@Resource @Resource
private ISupplierService supplierService; private ISupplierService supplierService;
<<<<<<< HEAD
=======
@Resource @Resource
private IDocInventoryItemStaticService iDocInventoryItemStaticService; private IDocInventoryItemStaticService iDocInventoryItemStaticService;
@@ -100,7 +98,6 @@ public class CommonServiceImpl implements ICommonService {
@Resource @Resource
private IDeviceDispenseService deviceDispenseService; private IDeviceDispenseService deviceDispenseService;
>>>>>>> v1.3
/** /**
* 获取药房列表 * 获取药房列表
* *
@@ -119,7 +116,6 @@ public class CommonServiceImpl implements ICommonService {
locationDtoList.add(locationDto); locationDtoList.add(locationDto);
} }
return locationDtoList; return locationDtoList;
} }
@@ -409,8 +405,8 @@ public class CommonServiceImpl implements ICommonService {
@Override @Override
public R<?> getContractMetadata() { public R<?> getContractMetadata() {
// TODO: Contract表的基础数据维护还没做,具体不知道状态字段的取值是什么,先查询默认值为0的数据 // TODO: Contract表的基础数据维护还没做,具体不知道状态字段的取值是什么,先查询默认值为0的数据
List<Contract> ContractList = List<Contract> ContractList
contractMapper.selectList(new LambdaQueryWrapper<Contract>().eq(Contract::getStatusEnum, 0)); = contractMapper.selectList(new LambdaQueryWrapper<Contract>().eq(Contract::getStatusEnum, 0));
// 复制同名字段并 return // 复制同名字段并 return
return R.ok(ContractList.stream().map(contract -> { return R.ok(ContractList.stream().map(contract -> {
ContractMetadata metadata = new ContractMetadata(); ContractMetadata metadata = new ContractMetadata();
@@ -470,8 +466,8 @@ public class CommonServiceImpl implements ICommonService {
// 查询当前登录者管理的病区 // 查询当前登录者管理的病区
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId(); Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
List<Long> locationIds = practitionerRoleService.getLocationIdsByPractitionerId(practitionerId); List<Long> locationIds = practitionerRoleService.getLocationIdsByPractitionerId(practitionerId);
List<Location> locationList = List<Location> locationList
locationService.getLocationList(locationIds, Collections.singletonList(LocationStatus.ACTIVE.getValue())); = locationService.getLocationList(locationIds, Collections.singletonList(LocationStatus.ACTIVE.getValue()));
List<Location> wardList = new ArrayList<>(); List<Location> wardList = new ArrayList<>();
for (Location ward : locationList) { for (Location ward : locationList) {
if (LocationForm.WARD.getValue().equals(ward.getFormEnum())) { if (LocationForm.WARD.getValue().equals(ward.getFormEnum())) {
@@ -563,8 +559,6 @@ public class CommonServiceImpl implements ICommonService {
return R.ok(commonAppMapper.getActivityDefinition(PublicationStatus.ACTIVE.getValue())); return R.ok(commonAppMapper.getActivityDefinition(PublicationStatus.ACTIVE.getValue()));
} }
<<<<<<< HEAD
=======
/** /**
* 查询备份单号 * 查询备份单号
* *
@@ -572,8 +566,8 @@ public class CommonServiceImpl implements ICommonService {
*/ */
@Override @Override
public R<?> getBackupNoList() { public R<?> getBackupNoList() {
List<DocInventoryItemStatic> docInventoryItemStaticList = List<DocInventoryItemStatic> docInventoryItemStaticList
iDocInventoryItemStaticService.list(new LambdaQueryWrapper<DocInventoryItemStatic>() = iDocInventoryItemStaticService.list(new LambdaQueryWrapper<DocInventoryItemStatic>()
.eq(DocInventoryItemStatic::getDeleteFlag, DelFlag.NO.getCode()) .eq(DocInventoryItemStatic::getDeleteFlag, DelFlag.NO.getCode())
.eq(DocInventoryItemStatic::getTenantId, SecurityUtils.getLoginUser().getTenantId())); .eq(DocInventoryItemStatic::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
if (docInventoryItemStaticList.isEmpty()) { if (docInventoryItemStaticList.isEmpty()) {
@@ -601,11 +595,11 @@ public class CommonServiceImpl implements ICommonService {
// 药品批号匹配 // 药品批号匹配
if (medicationDispenseList != null && !medicationDispenseList.isEmpty()) { if (medicationDispenseList != null && !medicationDispenseList.isEmpty()) {
// 获取待发放的药品id // 获取待发放的药品id
List<Long> medicationIdList = List<Long> medicationIdList
medicationDispenseList.stream().map(MedicationDispense::getMedicationId).distinct().toList(); = medicationDispenseList.stream().map(MedicationDispense::getMedicationId).distinct().toList();
// 获取发药药房 // 获取发药药房
List<Long> locationIdList = List<Long> locationIdList
medicationDispenseList.stream().map(MedicationDispense::getLocationId).distinct().toList(); = medicationDispenseList.stream().map(MedicationDispense::getLocationId).distinct().toList();
// 查询待发放药品的库存明细 // 查询待发放药品的库存明细
List<InventoryDetailDto> inventoryDetailList = commonAppMapper List<InventoryDetailDto> inventoryDetailList = commonAppMapper
@@ -653,8 +647,8 @@ public class CommonServiceImpl implements ICommonService {
} }
// 获取库存剩余数量 // 获取库存剩余数量
BigDecimal remainingInventoryQuantity = BigDecimal remainingInventoryQuantity
inventoryDetailDto.getInventoryQuantity().subtract(dispenseQuantity); = inventoryDetailDto.getInventoryQuantity().subtract(dispenseQuantity);
// 如果剩余库存数量大于等于0则说明当前批号库存充足 // 如果剩余库存数量大于等于0则说明当前批号库存充足
if (remainingInventoryQuantity.compareTo(BigDecimal.ZERO) >= 0) { if (remainingInventoryQuantity.compareTo(BigDecimal.ZERO) >= 0) {
medicationDispense.setLotNumber(inventoryDetailDto.getInventoryLotNumber()); medicationDispense.setLotNumber(inventoryDetailDto.getInventoryLotNumber());
@@ -716,11 +710,11 @@ public class CommonServiceImpl implements ICommonService {
// 耗材批号匹配 // 耗材批号匹配
if (deviceDispenseList != null && !deviceDispenseList.isEmpty()) { if (deviceDispenseList != null && !deviceDispenseList.isEmpty()) {
// 获取待发放的耗材id // 获取待发放的耗材id
List<Long> deviceIdList = List<Long> deviceIdList
deviceDispenseList.stream().map(DeviceDispense::getDeviceDefId).distinct().toList(); = deviceDispenseList.stream().map(DeviceDispense::getDeviceDefId).distinct().toList();
// 获取发耗材房 // 获取发耗材房
List<Long> locationIdList = List<Long> locationIdList
deviceDispenseList.stream().map(DeviceDispense::getLocationId).distinct().toList(); = deviceDispenseList.stream().map(DeviceDispense::getLocationId).distinct().toList();
// 查询待发放耗材的库存明细 // 查询待发放耗材的库存明细
List<InventoryDetailDto> inventoryDetailList = commonAppMapper.selectDeviceInventoryDetail(deviceIdList, List<InventoryDetailDto> inventoryDetailList = commonAppMapper.selectDeviceInventoryDetail(deviceIdList,
@@ -742,8 +736,8 @@ public class CommonServiceImpl implements ICommonService {
DeviceDispense deviceDispense = deviceDispenseList.get(currentIndex); DeviceDispense deviceDispense = deviceDispenseList.get(currentIndex);
currentIndex++; currentIndex++;
// 根据发放耗材和发放耗材房做key // 根据发放耗材和发放耗材房做key
String inventoryKey = String inventoryKey
deviceDispense.getDeviceDefId() + CommonConstants.Common.DASH + deviceDispense.getLocationId(); = deviceDispense.getDeviceDefId() + CommonConstants.Common.DASH + deviceDispense.getLocationId();
// 查询对应的库存信息 // 查询对应的库存信息
if (!inventoryDetailMap.containsKey(inventoryKey)) { if (!inventoryDetailMap.containsKey(inventoryKey)) {
return R.fail("耗材库存不存在耗材ID: " + deviceDispense.getDeviceDefId()); return R.fail("耗材库存不存在耗材ID: " + deviceDispense.getDeviceDefId());
@@ -768,8 +762,8 @@ public class CommonServiceImpl implements ICommonService {
} }
// 获取库存剩余数量 // 获取库存剩余数量
BigDecimal remainingInventoryQuantity = BigDecimal remainingInventoryQuantity
inventoryDetailDto.getInventoryQuantity().subtract(dispenseQuantity); = inventoryDetailDto.getInventoryQuantity().subtract(dispenseQuantity);
// 如果剩余库存数量大于等于0则说明当前批号库存充足 // 如果剩余库存数量大于等于0则说明当前批号库存充足
if (remainingInventoryQuantity.compareTo(BigDecimal.ZERO) >= 0) { if (remainingInventoryQuantity.compareTo(BigDecimal.ZERO) >= 0) {
deviceDispense.setLotNumber(inventoryDetailDto.getInventoryLotNumber()); deviceDispense.setLotNumber(inventoryDetailDto.getInventoryLotNumber());
@@ -825,5 +819,4 @@ public class CommonServiceImpl implements ICommonService {
} }
return R.ok(); return R.ok();
} }
>>>>>>> v1.3
} }

View File

@@ -220,40 +220,6 @@ 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);
<<<<<<< HEAD
}
/**
* 查询参与者签名
*
* @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();
=======
>>>>>>> v1.3
} }
/** /**

View File

@@ -105,8 +105,6 @@ public interface CommonAppMapper {
* @return 诊疗项目 * @return 诊疗项目
*/ */
List<ActivityDefinitionDto> getActivityDefinition(@Param("statusEnum") Integer statusEnum); List<ActivityDefinitionDto> getActivityDefinition(@Param("statusEnum") Integer statusEnum);
<<<<<<< HEAD
=======
/** /**
* 查询药品库存详细信息 * 查询药品库存详细信息
@@ -129,5 +127,4 @@ public interface CommonAppMapper {
*/ */
List<InventoryDetailDto> selectDeviceInventoryDetail(@Param("deviceIdList") List<Long> deviceIdList, List<InventoryDetailDto> selectDeviceInventoryDetail(@Param("deviceIdList") List<Long> deviceIdList,
@Param("locationIdList") List<Long> locationIdList, @Param("active") Integer active); @Param("locationIdList") List<Long> locationIdList, @Param("active") Integer active);
>>>>>>> v1.3
} }

View File

@@ -13,10 +13,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
=======
import com.core.common.enums.DelFlag; import com.core.common.enums.DelFlag;
>>>>>>> v1.3
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;
@@ -131,10 +128,9 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
// .map(category -> new DeviceManageInitDto.deviceCategory(category.getValue(), category.getInfo())) // .map(category -> new DeviceManageInitDto.deviceCategory(category.getValue(), category.getInfo()))
// .collect(Collectors.toList()); // .collect(Collectors.toList());
// deviceManageInitDto.setDeviceCategories(deviceCategories); // deviceManageInitDto.setDeviceCategories(deviceCategories);
// 获取器材 // 获取器材
List<SysDictData> deviceList = List<SysDictData> deviceList
sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DEVICE_CATEGORY_CODE); = sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DEVICE_CATEGORY_CODE);
// 从字典中获取器材分类 // 从字典中获取器材分类
List<DeviceManageInitDto.dictCategoryCode> deviceCategories = deviceList.stream() List<DeviceManageInitDto.dictCategoryCode> deviceCategories = deviceList.stream()
.map(category -> new DeviceManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel())) .map(category -> new DeviceManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel()))
@@ -176,8 +172,8 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
// 分页查询 // 分页查询
IPage<DeviceManageDto> deviceManagePage = IPage<DeviceManageDto> deviceManagePage
deviceManageMapper.getDevicePage(new Page<>(pageNo, pageSize), queryWrapper); = deviceManageMapper.getDevicePage(new Page<>(pageNo, pageSize), queryWrapper);
deviceManagePage.getRecords().forEach(e -> { deviceManagePage.getRecords().forEach(e -> {
// 高值器材标志枚举类回显赋值 // 高值器材标志枚举类回显赋值
@@ -219,8 +215,8 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
// 调用医保目录对照接口 // 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) { if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) {
R<?> r = R<?> r
ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId()); = ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId());
if (200 != r.getCode()) { if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常"); throw new RuntimeException("医保目录对照接口异常");
} }
@@ -344,8 +340,8 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
// 调用医保目录对照接口 // 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) { if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) {
R<?> r = R<?> r
ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId()); = ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId());
if (200 != r.getCode()) { if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常"); throw new RuntimeException("医保目录对照接口异常");
} }
@@ -393,13 +389,13 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
List<Location> locationList = locationService.list(new LambdaQueryWrapper<Location>() List<Location> locationList = locationService.list(new LambdaQueryWrapper<Location>()
.eq(Location::getDeleteFlag, DelFlag.NO.getCode()).orderByAsc(Location::getId)); .eq(Location::getDeleteFlag, DelFlag.NO.getCode()).orderByAsc(Location::getId));
Long defaultLocationId = locationList.stream().findFirst().orElse(new Location()).getId(); Long defaultLocationId = locationList.stream().findFirst().orElse(new Location()).getId();
Map<String, List<Location>> locationNameMap = Map<String, List<Location>> locationNameMap
locationList.stream().collect(Collectors.groupingBy(Location::getName)); = locationList.stream().collect(Collectors.groupingBy(Location::getName));
// 创建表数据 // 创建表数据
for (DeviceImportDto importDto : importDtoList) { for (DeviceImportDto importDto : importDtoList) {
// 创建器材定义 // 创建器材定义
DeviceDefinition deviceDefinition = DeviceDefinition deviceDefinition
createDeviceDefinitionEntity(importDto, orgId, defaultLocationId, locationNameMap); = createDeviceDefinitionEntity(importDto, orgId, defaultLocationId, locationNameMap);
deviceDefinitionService.save(deviceDefinition); deviceDefinitionService.save(deviceDefinition);
// 创建费用定价和详情 // 创建费用定价和详情
chargeItemDefinitionService.addChargeItemDefinitionAndDetail(importDto.getName(), importDto.getTypeCode(), chargeItemDefinitionService.addChargeItemDefinitionAndDetail(importDto.getName(), importDto.getTypeCode(),

View File

@@ -100,8 +100,8 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
diagnosisTreatmentInitDto.setExeOrganizations(exeOrganizations); diagnosisTreatmentInitDto.setExeOrganizations(exeOrganizations);
// 获取诊目录疗分类 // 获取诊目录疗分类
List<SysDictData> diagnosisList = List<SysDictData> diagnosisList
sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DIAGNOSIS_CATEGORY_CODE); = sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DIAGNOSIS_CATEGORY_CODE);
// 获取诊疗录疗分类 // 获取诊疗录疗分类
List<DiagnosisTreatmentInitDto.dictCategoryCode> diagnosisCategories = diagnosisList.stream() List<DiagnosisTreatmentInitDto.dictCategoryCode> diagnosisCategories = diagnosisList.stream()
.map(category -> new DiagnosisTreatmentInitDto.dictCategoryCode(category.getDictValue(), .map(category -> new DiagnosisTreatmentInitDto.dictCategoryCode(category.getDictValue(),
@@ -143,7 +143,6 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
// diseaseTreatmentCategories.add(diseaseTreatmentCategory2); // diseaseTreatmentCategories.add(diseaseTreatmentCategory2);
// //
// diagnosisTreatmentInitDto.setDiseaseTreatmentCategoryList(diseaseTreatmentCategories); // diagnosisTreatmentInitDto.setDiseaseTreatmentCategoryList(diseaseTreatmentCategories);
// 获取类型 // 获取类型
List<DiagnosisTreatmentInitDto.statusEnumOption> typeEnumOptions = Stream.of(ActivityType.values()) List<DiagnosisTreatmentInitDto.statusEnumOption> typeEnumOptions = Stream.of(ActivityType.values())
.map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo())) .map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo()))
@@ -178,8 +177,8 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
searchKey, new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); searchKey, new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
// 分页查询 // 分页查询
IPage<DiagnosisTreatmentDto> diseaseTreatmentPage = IPage<DiagnosisTreatmentDto> diseaseTreatmentPage
activityDefinitionManageMapper.getDiseaseTreatmentPage(new Page<DiagnosisTreatmentDto>(pageNo, pageSize), queryWrapper); = activityDefinitionManageMapper.getDiseaseTreatmentPage(new Page<DiagnosisTreatmentDto>(pageNo, pageSize), queryWrapper);
diseaseTreatmentPage.getRecords().forEach(e -> { diseaseTreatmentPage.getRecords().forEach(e -> {
// 医保标记枚举类回显赋值 // 医保标记枚举类回显赋值
@@ -396,8 +395,8 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
@Override @Override
public R<?> importData(MultipartFile file) { public R<?> importData(MultipartFile file) {
// 读取文件 // 读取文件
R<List<DiagnosisTreatmentImportDto>> readResult = R<List<DiagnosisTreatmentImportDto>> readResult
CommonUtil.readImportedExcelFile(file, DiagnosisTreatmentImportDto.class); = CommonUtil.readImportedExcelFile(file, DiagnosisTreatmentImportDto.class);
if (R.SUCCESS != readResult.getCode()) { if (R.SUCCESS != readResult.getCode()) {
return readResult; return readResult;
} }
@@ -447,11 +446,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
if (!serviceRequestList.isEmpty()) { if (!serviceRequestList.isEmpty()) {
if (serviceRequestList.stream().anyMatch( if (serviceRequestList.stream().anyMatch(
serviceRequest -> RequestStatus.COMPLETED.getValue().equals(serviceRequest.getStatusEnum()))) { serviceRequest -> RequestStatus.COMPLETED.getValue().equals(serviceRequest.getStatusEnum()))) {
<<<<<<< HEAD
return R.ok(1, "医生开过该诊疗项目,不可编辑"); return R.ok(1, "医生开过该诊疗项目,不可编辑");
=======
return R.ok(1, "医生开过该诊疗项目,不可编辑");
>>>>>>> v1.3
} }
} }
return R.ok(); return R.ok();

View File

@@ -12,10 +12,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
=======
import com.core.common.enums.DelFlag; import com.core.common.enums.DelFlag;
>>>>>>> v1.3
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;
@@ -132,8 +129,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
.collect(Collectors.toList()); .collect(Collectors.toList());
// 获取药品分类 // 获取药品分类
List<SysDictData> medicalList = List<SysDictData> medicalList
sysDictTypeService.selectDictDataByType(CommonConstants.DictName.MED_CATEGORY_CODE); = sysDictTypeService.selectDictDataByType(CommonConstants.DictName.MED_CATEGORY_CODE);
// 获取药品分类 // 获取药品分类
List<MedicationManageInitDto.dictCategoryCode> medicationCategories = medicalList.stream().map( List<MedicationManageInitDto.dictCategoryCode> medicationCategories = medicalList.stream().map(
category -> new MedicationManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel())) category -> new MedicationManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel()))
@@ -156,8 +153,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
.collect(Collectors.toList()); .collect(Collectors.toList());
// 住院临时医嘱拆分属性的枚举 // 住院临时医嘱拆分属性的枚举
List<MedicationManageInitDto.statusEnumOption> tempOrderSplitPropertyOptions = List<MedicationManageInitDto.statusEnumOption> tempOrderSplitPropertyOptions
Stream.of(TempOrderSplitPropertyCode.values()) = Stream.of(TempOrderSplitPropertyCode.values())
.map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo())) .map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -200,8 +197,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
"merchandise_py_str", "merchandise_wb_str")), "merchandise_py_str", "merchandise_wb_str")),
null); null);
IPage<MedicationManageDto> medicationManageDtoPage = IPage<MedicationManageDto> medicationManageDtoPage
medicationManageSearchMapper.getPage(new Page<>(pageNo, pageSize), queryWrapper); = medicationManageSearchMapper.getPage(new Page<>(pageNo, pageSize), queryWrapper);
// 枚举类回显赋值 // 枚举类回显赋值
medicationManageDtoPage.getRecords().forEach(e -> { medicationManageDtoPage.getRecords().forEach(e -> {
@@ -282,8 +279,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
boolean updateMedicationDefinition = medicationDefinitionService.updateById(medicationDefinition); boolean updateMedicationDefinition = medicationDefinitionService.updateById(medicationDefinition);
if (updateMedicationDefinition) { if (updateMedicationDefinition) {
// 调用医保目录对照接口 // 调用医保目录对照接口
String ybSwitch = String ybSwitch
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(medicationDefinition.getYbNo())) { if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(medicationDefinition.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.MED_MEDICATION_DEFINITION, R<?> r = ybService.directoryCheck(CommonConstants.TableName.MED_MEDICATION_DEFINITION,
medicationDefinition.getId()); medicationDefinition.getId());
@@ -453,8 +450,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
HttpServletResponse response) { HttpServletResponse response) {
// 获取租户ID // 获取租户ID
Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
List<MedicationManageDto> list = List<MedicationManageDto> list
medicationManageSearchMapper.getList(searchKey, ybMatchFlag, statusEnum, categoryCode, tenantId); = medicationManageSearchMapper.getList(searchKey, ybMatchFlag, statusEnum, categoryCode, tenantId);
ExcelUtil<MedicationManageDto> util = new ExcelUtil<>(MedicationManageDto.class); ExcelUtil<MedicationManageDto> util = new ExcelUtil<>(MedicationManageDto.class);
util.exportExcel(response, list, "药品目录"); util.exportExcel(response, list, "药品目录");
return null; return null;
@@ -484,16 +481,16 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
List<Location> locationList = locationService.list(new LambdaQueryWrapper<Location>() List<Location> locationList = locationService.list(new LambdaQueryWrapper<Location>()
.eq(Location::getDeleteFlag, DelFlag.NO.getCode()).orderByAsc(Location::getId)); .eq(Location::getDeleteFlag, DelFlag.NO.getCode()).orderByAsc(Location::getId));
Long defaultLocationId = locationList.stream().findFirst().orElse(new Location()).getId(); Long defaultLocationId = locationList.stream().findFirst().orElse(new Location()).getId();
Map<String, List<Location>> locationNameMap = Map<String, List<Location>> locationNameMap
locationList.stream().collect(Collectors.groupingBy(Location::getName)); = locationList.stream().collect(Collectors.groupingBy(Location::getName));
// 创建表数据 // 创建表数据
for (MedicationImportDto importDto : importDtoList) { for (MedicationImportDto importDto : importDtoList) {
// 创建药品定义 // 创建药品定义
MedicationDefinition medicationDefinition = createMedicationDefinitionEntity(importDto); MedicationDefinition medicationDefinition = createMedicationDefinitionEntity(importDto);
medicationDefinitionService.save(medicationDefinition); medicationDefinitionService.save(medicationDefinition);
// 创建药品 // 创建药品
Medication medication = Medication medication
createMedicationEntity(importDto, medicationDefinition.getId(), defaultLocationId, locationNameMap); = createMedicationEntity(importDto, medicationDefinition.getId(), defaultLocationId, locationNameMap);
medicationService.save(medication); medicationService.save(medication);
// 创建费用定价和详情 // 创建费用定价和详情
chargeItemDefinitionService.addChargeItemDefinitionAndDetail(importDto.getName(), importDto.getTypeCode(), chargeItemDefinitionService.addChargeItemDefinitionAndDetail(importDto.getName(), importDto.getTypeCode(),
@@ -523,8 +520,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
*/ */
@Override @Override
public R<?> validateMedicationEdit(Long medicationId) { public R<?> validateMedicationEdit(Long medicationId) {
List<MedicationRequest> medicationRequestList = List<MedicationRequest> medicationRequestList
medicationRequestService.getMedRequestByMedicationId(medicationId); = medicationRequestService.getMedRequestByMedicationId(medicationId);
if (!medicationRequestList.isEmpty()) { if (!medicationRequestList.isEmpty()) {
if (medicationRequestList.stream() if (medicationRequestList.stream()
.allMatch(x -> x.getStatusEnum().equals(RequestStatus.COMPLETED.getValue()))) { .allMatch(x -> x.getStatusEnum().equals(RequestStatus.COMPLETED.getValue()))) {
@@ -761,8 +758,8 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
new LambdaQueryWrapper<MedicationDefinition>().eq(MedicationDefinition::getName, importDto.getName()) new LambdaQueryWrapper<MedicationDefinition>().eq(MedicationDefinition::getName, importDto.getName())
.eq(MedicationDefinition::getManufacturerText, importDto.getManufacturerText())); .eq(MedicationDefinition::getManufacturerText, importDto.getManufacturerText()));
if (!medicationDefinitionList.isEmpty()) { if (!medicationDefinitionList.isEmpty()) {
List<Medication> medicationList = List<Medication> medicationList
medicationService.list(new LambdaQueryWrapper<Medication>() = medicationService.list(new LambdaQueryWrapper<Medication>()
.in(Medication::getMedicationDefId, .in(Medication::getMedicationDefId,
medicationDefinitionList.stream().map(MedicationDefinition::getId) medicationDefinitionList.stream().map(MedicationDefinition::getId)
.collect(Collectors.toList())) .collect(Collectors.toList()))

View File

@@ -22,271 +22,414 @@ import javax.validation.constraints.NotNull;
@Accessors(chain = true) @Accessors(chain = true)
public class MedicationManageDto { public class MedicationManageDto {
/** ID */ /**
* ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long id; private Long id;
/** 药品编码 */ /**
* 药品编码
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long medicationDefId; private Long medicationDefId;
/** 药品状态 */ /**
* 药品状态
*/
private Integer statusEnum; private Integer statusEnum;
private String statusEnum_enumText; private String statusEnum_enumText;
/** 所属科室 */ /**
* 所属科室
*/
@Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long orgId; private Long orgId;
private String orgId_dictText; private String orgId_dictText;
/** 所在位置 */ /**
* 所在位置
*/
@Dict(dictTable = "adm_location", dictCode = "id", dictText = "name") @Dict(dictTable = "adm_location", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long locationId; private Long locationId;
private String locationId_dictText; private String locationId_dictText;
/** 剂型 */ /**
* 剂型
*/
@Dict(dictCode = "dose_form_code") @Dict(dictCode = "dose_form_code")
private String doseFormCode; private String doseFormCode;
private String doseFormCode_dictText; private String doseFormCode_dictText;
/** 规格 */ /**
* 规格
*/
private String totalVolume; private String totalVolume;
/** 成分 */ /**
* 成分
*/
private String ingredientItem; private String ingredientItem;
/** 是否为活性 */ /**
* 是否为活性
*/
private Integer activeFlag; private Integer activeFlag;
private String activeFlag_enumText; private String activeFlag_enumText;
/** 批次号 */ /**
* 批次号
*/
private String lotNumber; private String lotNumber;
/** 生效日期 */ /**
* 生效日期
*/
private Date effectiveDate; private Date effectiveDate;
/** 到期日期 */ /**
* 到期日期
*/
private Date expirationDate; private Date expirationDate;
/** 用法 */ /**
* 用法
*/
@Dict(dictCode = "method_code") @Dict(dictCode = "method_code")
private String methodCode; private String methodCode;
private String methodCode_dictText; private String methodCode_dictText;
/** 用药频次 */ /**
* 用药频次
*/
@Dict(dictCode = "rate_code") @Dict(dictCode = "rate_code")
private String rateCode; private String rateCode;
private String rateCode_dictText; private String rateCode_dictText;
/** 单次剂量 */ /**
* 单次剂量
*/
private BigDecimal dose; private BigDecimal dose;
/** 剂量单位 */ /**
* 剂量单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String doseUnitCode; private String doseUnitCode;
private String doseUnitCode_dictText; private String doseUnitCode_dictText;
/** 单次最大剂量 */ /**
* 单次最大剂量
*/
private BigDecimal maxUnit; private BigDecimal maxUnit;
/** 药品定义 */ /**
* 药品定义
*/
private String definition; private String definition;
/** 用量限定 */ /**
* 用量限定
*/
private BigDecimal usageLimit; private BigDecimal usageLimit;
/** DDD值 */ /**
* DDD值
*/
@Dict(dictCode = "ddd_code") @Dict(dictCode = "ddd_code")
private String dddCode; private String dddCode;
private String dddCode_dictText; private String dddCode_dictText;
/** DDD单位 */ /**
* DDD单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String dddUnitCode; private String dddUnitCode;
private String dddUnitCode_dictText; private String dddUnitCode_dictText;
/** 药品编号 */ /**
* 药品编号
*/
private String busNo; private String busNo;
/** 药品名称 */ /**
* 药品名称
*/
private String name; private String name;
/** 适用范围 */ /**
* 适用范围
*/
private Integer domainEnum; private Integer domainEnum;
private String domainEnum_enumText; private String domainEnum_enumText;
/** 药品版本 */ /**
* 药品版本
*/
private String version; private String version;
/** 英文药名 */ /**
* 英文药名
*/
private String nameEn; private String nameEn;
/** 药品名称拼音码 */ /**
* 药品名称拼音码
*/
private String pyStr; private String pyStr;
/** 药品五笔码 */ /**
* 药品五笔码
*/
private String wbStr; private String wbStr;
/** 药品分类 */ /**
* 药品分类
*/
@Dict(dictCode = "med_category_code") @Dict(dictCode = "med_category_code")
private String categoryCode; private String categoryCode;
private String categoryCode_dictText; private String categoryCode_dictText;
/** 商品名称 */ /**
* 商品名称
*/
private String merchandiseName; private String merchandiseName;
/** 商品名称拼音码 */ /**
* 商品名称拼音码
*/
private String merchandisePyStr; private String merchandisePyStr;
/** 商品五笔码 */ /**
* 商品五笔码
*/
private String merchandiseWbStr; private String merchandiseWbStr;
/** 药品单位 */ /**
* 药品单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
/** 最小单位 */ /**
* 最小单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String minUnitCode; private String minUnitCode;
private String minUnitCode_dictText; private String minUnitCode_dictText;
/** 所含耗材 */ /**
* 所含耗材
*/
private String comprisedText; private String comprisedText;
/** 拆零比 */ /**
* 拆零比
*/
private BigDecimal partPercent; private BigDecimal partPercent;
/** 剂量形式 */ /**
* 剂量形式
*/
@Dict(dictCode = "dose_form_code") @Dict(dictCode = "dose_form_code")
private Integer doseFrom; private Integer doseFrom;
private String doseFrom_dictText; private String doseFrom_dictText;
/** 批准文号 */ /**
* 批准文号
*/
private String approvalNumber; private String approvalNumber;
/** 医保是否对码 */ /**
* 医保是否对码
*/
private Integer ybMatchFlag; private Integer ybMatchFlag;
private String ybMatchFlag_enumText;; private String ybMatchFlag_enumText;
;
/** 医保编码 */ /** 医保编码 */
private String ybNo; private String ybNo;
/** 药理作用分类 */ /**
* 药理作用分类
*/
private String pharmacologyCategoryCode; private String pharmacologyCategoryCode;
/** 是否皮试 */ /**
* 是否皮试
*/
private Integer skinTestFlag; private Integer skinTestFlag;
private String skinTestFlag_enumText; private String skinTestFlag_enumText;
/** 是否为注射药物 */ /**
* 是否为注射药物
*/
private Integer injectFlag; private Integer injectFlag;
private String injectFlag_enumText; private String injectFlag_enumText;
/** 生产厂家 */ /**
* 生产厂家
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId; private Long manufacturerId;
/** 供应商 */ /**
* 供应商
*/
@Dict(dictTable = "adm_supplier", dictCode = "id", dictText = "name") @Dict(dictTable = "adm_supplier", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long supplyId; private Long supplyId;
private String supplyId_dictText; private String supplyId_dictText;
/** 是否限制使用 */ /**
* 是否限制使用
*/
private Integer restrictedFlag; private Integer restrictedFlag;
private String restrictedFlag_enumText; private String restrictedFlag_enumText;
/** 限制使用范围 */ /**
* 限制使用范围
*/
private String restrictedScope; private String restrictedScope;
/** 儿童用药标志 */ /**
* 儿童用药标志
*/
private Integer childrenFlag; private Integer childrenFlag;
private String childrenFlag_enumText; private String childrenFlag_enumText;
/** 产品特性 */ /**
* 产品特性
*/
private Integer characteristic; private Integer characteristic;
private String characteristic_enumText; private String characteristic_enumText;
/** 贯标国家编码 */ /**
* 贯标国家编码
*/
private String nationalDrugCode; private String nationalDrugCode;
/** 拆分属性 */ /**
* 拆分属性
*/
private Integer partAttributeEnum; private Integer partAttributeEnum;
private String partAttributeEnum_enumText; private String partAttributeEnum_enumText;
/** 抗生素分类 */ /**
* 抗生素分类
*/
@Dict(dictCode = "antibiotic_type_code") @Dict(dictCode = "antibiotic_type_code")
private String antibioticCode; private String antibioticCode;
private String antibioticCode_dictText; private String antibioticCode_dictText;
/** 权限限制 */ /**
* 权限限制
*/
private Integer restrictedEnum; private Integer restrictedEnum;
private String restrictedEnum_enumText; private String restrictedEnum_enumText;
/** 是否自制 */ /**
* 是否自制
*/
private Integer selfFlag; private Integer selfFlag;
private String selfFlag_enumText; private String selfFlag_enumText;
/** 是否抗生素 */ /**
* 是否抗生素
*/
private Integer antibioticFlag; private Integer antibioticFlag;
private String antibioticFlag_enumText; private String antibioticFlag_enumText;
/** 基药标识 */ /**
* 基药标识
*/
private Integer basicFlag; private Integer basicFlag;
private String basicFlag_enumText; private String basicFlag_enumText;
/** 生产厂商文本 */ /**
* 生产厂商文本
*/
private String manufacturerText; private String manufacturerText;
/** 最小库存警戒数量(常规单位) */ /**
* 最小库存警戒数量(常规单位)
*/
private BigDecimal itemMinQuantity; private BigDecimal itemMinQuantity;
/** 最大库存警戒数量(常规单位) */ /**
* 最大库存警戒数量(常规单位)
*/
private BigDecimal itemMaxQuantity; private BigDecimal itemMaxQuantity;
/** 售价 */ /**
* 售价
*/
private BigDecimal price; private BigDecimal price;
/** 单次最小用药频次 */ /**
* 单次最小用药频次
*/
private String minRateCode; private String minRateCode;
/** 单次最大用药频次 */ /**
* 单次最大用药频次
*/
private String maxRateCode; private String maxRateCode;
/** 医保类别 */ /**
* 医保类别
*/
private String ybType; private String ybType;
/** 财务类别 */ /**
* 财务类别
*/
@Dict(dictCode = "fin_type_code") @Dict(dictCode = "fin_type_code")
private String typeCode; private String typeCode;
private String typeCode_dictText; private String typeCode_dictText;
/** 成分 */ /**
* 成分
*/
private String ingredient; private String ingredient;
/** 购入价 */ /**
* 购入价
*/
private BigDecimal purchasePrice; private BigDecimal purchasePrice;
/** 零售价 */ /**
* 零售价
*/
private BigDecimal retailPrice; private BigDecimal retailPrice;
/** 最高零售价 */ /**
* 最高零售价
*/
private BigDecimal maximumRetailPrice; private BigDecimal maximumRetailPrice;
/** 住院临时医嘱拆分属性 */ /**
* 住院临时医嘱拆分属性
*/
private Integer thoPartAttributeEnum; private Integer thoPartAttributeEnum;
private String thoPartAttributeEnum_enumText; private String thoPartAttributeEnum_enumText;
/** 剂量单位换算比 */ /**
* 剂量单位换算比
*/
private BigDecimal unitConversionRatio; private BigDecimal unitConversionRatio;
/** 医保等级 */ /**
* 医保等级
*/
private Integer chrgitmLv; private Integer chrgitmLv;
/** 处方标志 */ /**
* 处方标志
*/
private Integer rxFlag; private Integer rxFlag;
/** /**
@@ -294,12 +437,9 @@ public class MedicationManageDto {
*/ */
private String dosageInstruction; private String dosageInstruction;
<<<<<<< HEAD
=======
/** /**
* 药品69码 * 药品69码
*/ */
private String drug69Code; private String drug69Code;
>>>>>>> v1.3
} }

View File

@@ -24,238 +24,380 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class MedicationManageUpDto { public class MedicationManageUpDto {
/** ID */ /**
* ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long id; private Long id;
/** 药品编码 */ /**
* 药品编码
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long medicationDefId; private Long medicationDefId;
/** 所属科室 */ /**
* 所属科室
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long orgId; private Long orgId;
/** 所在位置 */ /**
* 所在位置
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long locationId; private Long locationId;
/** 剂型 */ /**
* 剂型
*/
private String doseFormCode; private String doseFormCode;
/** 规格 */ /**
* 规格
*/
private String totalVolume; private String totalVolume;
/** 成分 */ /**
* 成分
*/
private String ingredientItem; private String ingredientItem;
/** 是否为活性 */ /**
* 是否为活性
*/
private Integer activeFlag; private Integer activeFlag;
/** 批次号 */ /**
* 批次号
*/
private String lotNumber; private String lotNumber;
/** 生效日期 */ /**
* 生效日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date effectiveDate; private Date effectiveDate;
/** 到期日期 */ /**
* 到期日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date expirationDate; private Date expirationDate;
/** 用法 */ /**
* 用法
*/
private String methodCode; private String methodCode;
/** 用药频次 */ /**
* 用药频次
*/
private String rateCode; private String rateCode;
/** 单次剂量 */ /**
* 单次剂量
*/
private BigDecimal dose; private BigDecimal dose;
/** 剂量单位 */ /**
* 剂量单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
@NotBlank(message = "剂量单位不能为空") @NotBlank(message = "剂量单位不能为空")
private String doseUnitCode; private String doseUnitCode;
private String doseUnitCode_dictText; private String doseUnitCode_dictText;
/** 单次最大剂量 */ /**
* 单次最大剂量
*/
private BigDecimal maxUnit; private BigDecimal maxUnit;
/** 药品定义 */ /**
* 药品定义
*/
private String definition; private String definition;
/** 药品编号 */ /**
* 药品编号
*/
private String busNo; private String busNo;
/** 药品名称 */ /**
* 药品名称
*/
@NotBlank(message = "药品名称不能为空") @NotBlank(message = "药品名称不能为空")
private String name; private String name;
/** 适用范围 */ /**
* 适用范围
*/
private Integer domainEnum; private Integer domainEnum;
/** 药品版本 */ /**
* 药品版本
*/
private String version; private String version;
/** 英文药名 */ /**
* 英文药名
*/
private String nameEn; private String nameEn;
/** 药品名称拼音码 */ /**
* 药品名称拼音码
*/
private String pyStr; private String pyStr;
/** 药品五笔码 */ /**
* 药品五笔码
*/
private String wbStr; private String wbStr;
/** 药品分类 */ /**
* 药品分类
*/
private String categoryCode; private String categoryCode;
/** 商品名称 */ /**
* 商品名称
*/
private String merchandiseName; private String merchandiseName;
/** 商品名称拼音码 */ /**
* 商品名称拼音码
*/
private String merchandisePyStr; private String merchandisePyStr;
/** 商品五笔码 */ /**
* 商品五笔码
*/
private String merchandiseWbStr; private String merchandiseWbStr;
/** 药品单位 */ /**
* 药品单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
/** 最小单位 */ /**
* 最小单位
*/
private String minUnitCode; private String minUnitCode;
/** 所含耗材 */ /**
* 所含耗材
*/
private String comprisedText; private String comprisedText;
/** 成分 */ /**
* 成分
*/
private String ingredient; private String ingredient;
/** 拆零比 */ /**
* 拆零比
*/
private BigDecimal partPercent; private BigDecimal partPercent;
/** 剂量形式 */ /**
* 剂量形式
*/
@Dict(dictCode = "dose_form_code") @Dict(dictCode = "dose_form_code")
private Integer doseFrom; private Integer doseFrom;
private String doseFrom_dictText; private String doseFrom_dictText;
/** 批准文号 */ /**
* 批准文号
*/
private String approvalNumber; private String approvalNumber;
/** 医保是否对码 */ /**
* 医保是否对码
*/
private Integer ybMatchFlag; private Integer ybMatchFlag;
/** 医保编码 */ /**
* 医保编码
*/
private String ybNo; private String ybNo;
/** 药理作用分类 */ /**
* 药理作用分类
*/
private String pharmacologyCategoryCode; private String pharmacologyCategoryCode;
/** 是否皮试 */ /**
* 是否皮试
*/
private Integer skinTestFlag; private Integer skinTestFlag;
/** 是否为注射药物 */ /**
* 是否为注射药物
*/
private Integer injectFlag; private Integer injectFlag;
/** 生产厂家 */ /**
* 生产厂家
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId; private Long manufacturerId;
/** 生产厂商文本 */ /**
* 生产厂商文本
*/
private String manufacturerText; private String manufacturerText;
/** 供应商 */ /**
* 供应商
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long supplyId; private Long supplyId;
/** 是否限制使用 */ /**
* 是否限制使用
*/
private Integer restrictedFlag; private Integer restrictedFlag;
/** 限制使用范围 */ /**
* 限制使用范围
*/
private String restrictedScope; private String restrictedScope;
/** 儿童用药标志 */ /**
* 儿童用药标志
*/
private Integer childrenFlag; private Integer childrenFlag;
/** 产品特性 */ /**
* 产品特性
*/
private Integer characteristic; private Integer characteristic;
/** 购入价 */ /**
* 购入价
*/
private BigDecimal purchasePrice; private BigDecimal purchasePrice;
/** 零售价 */ /**
* 零售价
*/
private BigDecimal retailPrice; private BigDecimal retailPrice;
/** 最高零售价 */ /**
* 最高零售价
*/
private BigDecimal maximumRetailPrice; private BigDecimal maximumRetailPrice;
/** 医保类别 */ /**
* 医保类别
*/
private String ybType; private String ybType;
/** 财务类别 */ /**
* 财务类别
*/
@Dict(dictCode = "fin_type_code") @Dict(dictCode = "fin_type_code")
private String typeCode; private String typeCode;
private String typeCode_dictText; private String typeCode_dictText;
/** 单次最小用药频次 */ /**
* 单次最小用药频次
*/
private String minRateCode; private String minRateCode;
/** 单次最大用药频次 */ /**
* 单次最大用药频次
*/
private String maxRateCode; private String maxRateCode;
/** 药品状态 */ /**
* 药品状态
*/
private Integer statusEnum; private Integer statusEnum;
private String statusEnum_enumText; private String statusEnum_enumText;
/** 拆分属性 */ /**
* 拆分属性
*/
private Integer partAttributeEnum; private Integer partAttributeEnum;
/** 贯标国家编码 */ /**
* 贯标国家编码
*/
private String nationalDrugCode; private String nationalDrugCode;
/** 是否抗生素 */ /**
* 是否抗生素
*/
private Integer antibioticFlag; private Integer antibioticFlag;
/** 是否自制 */ /**
* 是否自制
*/
private Integer selfFlag; private Integer selfFlag;
/** DDD值 */ /**
* DDD值
*/
private String dddCode; private String dddCode;
/** DDD单位 */ /**
* DDD单位
*/
private String dddUnitCode; private String dddUnitCode;
/** 用量限定 */ /**
* 用量限定
*/
private BigDecimal usageLimit; private BigDecimal usageLimit;
/** 抗生素分类 */ /**
* 抗生素分类
*/
@Dict(dictCode = "antibiotic_type_code") @Dict(dictCode = "antibiotic_type_code")
private String antibioticCode; private String antibioticCode;
private String antibioticCode_dictText; private String antibioticCode_dictText;
/** 权限限制 */ /**
* 权限限制
*/
private Integer restrictedEnum; private Integer restrictedEnum;
/** 基药标识 */ /**
* 基药标识
*/
private Integer basicFlag; private Integer basicFlag;
/** 住院临时医嘱拆分属性 */ /**
* 住院临时医嘱拆分属性
*/
private Integer thoPartAttributeEnum; private Integer thoPartAttributeEnum;
/** 最小库存警戒数量(常规单位) */ /**
* 最小库存警戒数量(常规单位)
*/
private BigDecimal itemMinQuantity; private BigDecimal itemMinQuantity;
/** 最大库存警戒数量(常规单位) */ /**
* 最大库存警戒数量(常规单位)
*/
private BigDecimal itemMaxQuantity; private BigDecimal itemMaxQuantity;
/** 剂量单位换算比 */ /**
* 剂量单位换算比
*/
private BigDecimal unitConversionRatio; private BigDecimal unitConversionRatio;
/** 医保等级 */ /**
* 医保等级
*/
private Integer chrgitmLv; private Integer chrgitmLv;
/** 处方标志 */ /**
* 处方标志
*/
private Integer rxFlag; private Integer rxFlag;
/** /**
@@ -263,12 +405,9 @@ public class MedicationManageUpDto {
*/ */
private String dosageInstruction; private String dosageInstruction;
<<<<<<< HEAD
=======
/** /**
* 药品69码 * 药品69码
*/ */
private String drug69Code; private String drug69Code;
>>>>>>> v1.3
} }

View File

@@ -5,10 +5,6 @@ import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
<<<<<<< HEAD
import org.springframework.beans.factory.annotation.Autowired;
=======
>>>>>>> v1.3
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;
@@ -93,8 +89,8 @@ public class DepartmentIssuanceOrderServiceImpl implements IDepartmentIssuanceOr
@Override @Override
public R<?> getDetailPage(String busNo, Integer pageNo, Integer pageSize) { public R<?> getDetailPage(String busNo, Integer pageNo, Integer pageSize) {
Page<DepartmentDetailDto> issuanceOrderDtoDetailPage = Page<DepartmentDetailDto> issuanceOrderDtoDetailPage
departmentCommonMapper.getDetailPage(new Page<>(pageNo, pageSize), busNo); = departmentCommonMapper.getDetailPage(new Page<>(pageNo, pageSize), busNo);
issuanceOrderDtoDetailPage.getRecords().forEach(e -> { issuanceOrderDtoDetailPage.getRecords().forEach(e -> {
// 单据分类 // 单据分类
@@ -123,15 +119,14 @@ public class DepartmentIssuanceOrderServiceImpl implements IDepartmentIssuanceOr
* @param dispenseIdList 耗材发放id * @param dispenseIdList 耗材发放id
* @return 操作结果 * @return 操作结果
*/ */
@Override @Override
public boolean addOrEditIssuanceOrder(List<Long> dispenseIdList) { public boolean addOrEditIssuanceOrder(List<Long> dispenseIdList) {
// 获取单据号 // 获取单据号
String busNo = this.getBusNo(); String busNo = this.getBusNo();
// 获取更表所需信息 // 获取更表所需信息
List<DepartmentDetailDto> detailDto = List<DepartmentDetailDto> detailDto
departmentIssuanceOrderMapper.getInfo(dispenseIdList, DispenseStatus.COMPLETED.getValue()); = departmentIssuanceOrderMapper.getInfo(dispenseIdList, DispenseStatus.COMPLETED.getValue());
List<SupplyRequest> supplyRequestList = new ArrayList<>(); List<SupplyRequest> supplyRequestList = new ArrayList<>();
SupplyRequest supplyRequest; SupplyRequest supplyRequest;

View File

@@ -4,14 +4,10 @@ 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;
<<<<<<< HEAD
import com.openhis.web.doctorstation.dto.*;
=======
import com.openhis.web.doctorstation.dto.AdviceBaseDto; import com.openhis.web.doctorstation.dto.AdviceBaseDto;
import com.openhis.web.doctorstation.dto.AdviceSaveParam; import com.openhis.web.doctorstation.dto.AdviceSaveParam;
import com.openhis.web.doctorstation.dto.OrderBindInfoDto; import com.openhis.web.doctorstation.dto.OrderBindInfoDto;
import com.openhis.web.doctorstation.dto.UpdateGroupIdParam; import com.openhis.web.doctorstation.dto.UpdateGroupIdParam;
>>>>>>> v1.3
/** /**
* 医生站-医嘱/处方 应用Service * 医生站-医嘱/处方 应用Service

View File

@@ -72,7 +72,6 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// @Resource // @Resource
// IOrganizationLocationService iOrganizationLocationService; // IOrganizationLocationService iOrganizationLocationService;
@Resource @Resource
IMedicationDispenseService iMedicationDispenseService; IMedicationDispenseService iMedicationDispenseService;
@@ -90,7 +89,6 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// @Resource // @Resource
// OutpatientRegistrationAppMapper outpatientRegistrationAppMapper; // OutpatientRegistrationAppMapper outpatientRegistrationAppMapper;
@Resource @Resource
DoctorStationSendApplyUtil doctorStationSendApplyUtil; DoctorStationSendApplyUtil doctorStationSendApplyUtil;
@@ -101,35 +99,16 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param locationId 药房id * @param locationId 药房id
* @param adviceDefinitionIdParamList 医嘱定义id参数集合 * @param adviceDefinitionIdParamList 医嘱定义id参数集合
<<<<<<< HEAD
* @param organizationId 患者挂号对应的科室id
* @param pageNo 当前页
* @param pageSize 每页多少条
* @param pricingFlag 划价标记
* @param adviceTypes 医嘱类型参数集合
=======
* @param organizationId 患者挂号对应的科室id * @param organizationId 患者挂号对应的科室id
* @param pageNo 当前页 * @param pageNo 当前页
* @param pageSize 每页多少条 * @param pageSize 每页多少条
* @param pricingFlag 划价标记 * @param pricingFlag 划价标记
* @param adviceTypes 医嘱类型参数集合 * @param adviceTypes 医嘱类型参数集合
* @param orderPricing 医嘱定价来源 | 定时任务调用时传参 * @param orderPricing 医嘱定价来源 | 定时任务调用时传参
>>>>>>> v1.3
* @return 医嘱信息 * @return 医嘱信息
*/ */
@Override @Override
public IPage<AdviceBaseDto> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, String searchKey, Long locationId, public IPage<AdviceBaseDto> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, String searchKey, Long locationId,
<<<<<<< HEAD
List<Long> adviceDefinitionIdParamList, Long organizationId, Integer pageNo, Integer pageSize,
Integer pricingFlag, List<Integer> adviceTypes) {
// 医嘱定价来源
String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE);
// 如果配置为空使用retailPrice作为默认值
if (StringUtils.isEmpty(orderPricingSource)) {
// throw new ServiceException("租户配置项【医嘱定价来源】未配置");
orderPricingSource = "retailPrice";
}
=======
List<Long> adviceDefinitionIdParamList, Long organizationId, Integer pageNo, Integer pageSize, List<Long> adviceDefinitionIdParamList, Long organizationId, Integer pageNo, Integer pageSize,
Integer pricingFlag, List<Integer> adviceTypes, String orderPricing) { Integer pricingFlag, List<Integer> adviceTypes, String orderPricing) {
// 设置默认科室 (不取前端传的了) // 设置默认科室 (不取前端传的了)
@@ -143,27 +122,19 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
orderPricingSource = orderPricing; orderPricingSource = orderPricing;
} }
// 开药时药房允许多选开关 // 开药时药房允许多选开关
String pharmacyMultipleChoiceSwitch = String pharmacyMultipleChoiceSwitch
TenantOptionUtil.getOptionContent(TenantOptionDict.PHARMACY_MULTIPLE_CHOICE_SWITCH); = TenantOptionUtil.getOptionContent(TenantOptionDict.PHARMACY_MULTIPLE_CHOICE_SWITCH);
// 药房允许多选 // 药房允许多选
boolean pharmacyMultipleChoice = Whether.YES.getCode().equals(pharmacyMultipleChoiceSwitch); boolean pharmacyMultipleChoice = Whether.YES.getCode().equals(pharmacyMultipleChoiceSwitch);
>>>>>>> v1.3
// 构建查询条件 // 构建查询条件
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(
<<<<<<< HEAD
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, pricingFlag, adviceDefinitionIdParamList, adviceTypes, CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, pricingFlag, adviceDefinitionIdParamList, adviceTypes,
queryWrapper); queryWrapper);
=======
new Page<>(pageNo, pageSize), PublicationStatus.ACTIVE.getValue(), organizationId,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, pricingFlag, adviceDefinitionIdParamList, adviceTypes,
queryWrapper);
>>>>>>> v1.3
List<AdviceBaseDto> adviceBaseDtoList = adviceBaseInfo.getRecords(); List<AdviceBaseDto> adviceBaseDtoList = adviceBaseInfo.getRecords();
// 如果searchKey不为null对查询结果进行排序adviceName以searchKey开头的排在前面 // 如果searchKey不为null对查询结果进行排序adviceName以searchKey开头的排在前面
@@ -172,22 +143,22 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
} }
// 医嘱定义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集合}
@@ -203,17 +174,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
} }
// 费用定价子表信息 // 费用定价子表信息
List<AdvicePriceDto> childCharge = doctorStationAdviceAppMapper List<AdvicePriceDto> childCharge = doctorStationAdviceAppMapper
<<<<<<< HEAD
.getChildCharge(ConditionCode.LOT_NUMBER_PRICE.getCode(), chargeItemDefinitionIdList); .getChildCharge(ConditionCode.LOT_NUMBER_PRICE.getCode(), chargeItemDefinitionIdList);
// 费用定价主表信息 // 费用定价主表信息
List<AdvicePriceDto> mainCharge = List<AdvicePriceDto> mainCharge
doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList, PublicationStatus.ACTIVE.getValue()); = doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList, PublicationStatus.ACTIVE.getValue());
=======
.getChildCharge(ConditionCode.LOT_NUMBER_PRICE.getCode(), chargeItemDefinitionIdList);
// 费用定价主表信息
List<AdvicePriceDto> mainCharge =
doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList, PublicationStatus.ACTIVE.getValue());
>>>>>>> v1.3
String unitCode = ""; // 包装单位 String unitCode = ""; // 包装单位
Long chargeItemDefinitionId; // 费用定价主表ID Long chargeItemDefinitionId; // 费用定价主表ID
for (AdviceBaseDto baseDto : adviceBaseDtoList) { for (AdviceBaseDto baseDto : adviceBaseDtoList) {
@@ -226,21 +190,12 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
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: // 耗材
// 每一条医嘱的库存集合信息 , 包装单位库存前端计算 // 每一条医嘱的库存集合信息 , 包装单位库存前端计算
<<<<<<< HEAD
List<
AdviceInventoryDto> inventoryList =
adviceInventory.stream()
.filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId())
&& baseDto.getAdviceTableName().equals(e.getItemTable()))
.collect(Collectors.toList());
=======
List<AdviceInventoryDto> inventoryList = adviceInventory.stream().filter(e -> baseDto List<AdviceInventoryDto> inventoryList = adviceInventory.stream().filter(e -> baseDto
.getAdviceDefinitionId().equals(e.getItemId()) .getAdviceDefinitionId().equals(e.getItemId())
&& baseDto.getAdviceTableName().equals(e.getItemTable()) && baseDto.getAdviceTableName().equals(e.getItemTable())
&& (pharmacyMultipleChoice && (pharmacyMultipleChoice
|| (baseDto.getPositionId() == null || baseDto.getPositionId().equals(e.getLocationId())))) || (baseDto.getPositionId() == null || baseDto.getPositionId().equals(e.getLocationId()))))
.collect(Collectors.toList()); .collect(Collectors.toList());
>>>>>>> v1.3
// 库存信息 // 库存信息
baseDto.setInventoryList(inventoryList); baseDto.setInventoryList(inventoryList);
// 设置默认产品批号 // 设置默认产品批号
@@ -277,7 +232,6 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
String finalUnitCode = unitCode; String finalUnitCode = unitCode;
// 从定价子表取价格(适用于批次售卖场景) // 从定价子表取价格(适用于批次售卖场景)
List<AdvicePriceDto> childPrice = childCharge.stream() List<AdvicePriceDto> childPrice = childCharge.stream()
<<<<<<< HEAD
.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
@@ -286,16 +240,6 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
List<AdvicePriceDto> mainPrice = mainCharge.stream() List<AdvicePriceDto> mainPrice = mainCharge.stream()
.filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) .filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
.collect(Collectors.toList()); .collect(Collectors.toList());
=======
.filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId)
&& e.getConditionValue().equals(adviceInventoryDto.getLotNumber()))
.peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode
.collect(Collectors.toList());
// 从定价主表取价格(适用于统一零售价场景)
List<AdvicePriceDto> mainPrice = mainCharge.stream()
.filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
.collect(Collectors.toList());
>>>>>>> v1.3
// 按批次售价 // 按批次售价
if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) { if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) {
priceDtoList.addAll(childPrice); priceDtoList.addAll(childPrice);
@@ -307,8 +251,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
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);
@@ -327,11 +271,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
* 查询医嘱绑定信息 * 查询医嘱绑定信息
* *
* @param typeCode 1:用法绑东西 2:诊疗绑东西 * @param typeCode 1:用法绑东西 2:诊疗绑东西
<<<<<<< HEAD
* @param itemNo 用法的code 或者 诊疗定义id * @param itemNo 用法的code 或者 诊疗定义id
=======
* @param itemNo 用法的code 或者 诊疗定义id
>>>>>>> v1.3
* @return 医嘱绑定信息 * @return 医嘱绑定信息
*/ */
@Override @Override
@@ -366,10 +306,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
* 保存时,校验库存 * 保存时,校验库存
*/ */
if (AdviceOpType.SAVE_ADVICE.getCode().equals(adviceOpType)) { if (AdviceOpType.SAVE_ADVICE.getCode().equals(adviceOpType)) {
List<AdviceSaveDto> medUpdateList = List<AdviceSaveDto> medUpdateList
medicineList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList()); = medicineList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList());
List<AdviceSaveDto> devUpdateList = List<AdviceSaveDto> devUpdateList
deviceList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList()); = deviceList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList());
// 编辑时,释放本身占用的库存发放 // 编辑时,释放本身占用的库存发放
for (AdviceSaveDto adviceSaveDto : medUpdateList) { for (AdviceSaveDto adviceSaveDto : medUpdateList) {
iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId()); iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId());
@@ -378,8 +318,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
iDeviceDispenseService.deleteDeviceDispense(adviceSaveDto.getRequestId()); iDeviceDispenseService.deleteDeviceDispense(adviceSaveDto.getRequestId());
} }
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);
@@ -395,8 +335,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
/** /**
* 处理药品请求 * 处理药品请求
*/ */
List<String> medRequestIdList = List<String> medRequestIdList
this.handMedication(medicineList, curDate, adviceOpType, organizationId, signCode); = this.handMedication(medicineList, curDate, adviceOpType, organizationId, signCode);
/** /**
* 处理诊疗项目请求 * 处理诊疗项目请求
@@ -423,24 +363,15 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
.in(ChargeItem::getServiceId, requestIds)); .in(ChargeItem::getServiceId, requestIds));
} }
<<<<<<< HEAD
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"门诊医嘱"}));
=======
return R.ok(medRequestIdList, return R.ok(medRequestIdList,
MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"门诊医嘱"})); MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"门诊医嘱"}));
>>>>>>> v1.3
} }
/** /**
* 处理药品 * 处理药品
*/ */
<<<<<<< HEAD
private void handMedication(List<AdviceSaveDto> medicineList, Date curDate, String adviceOpType,
Long organizationId, String signCode) {
=======
private List<String> handMedication(List<AdviceSaveDto> medicineList, Date curDate, String adviceOpType, private List<String> handMedication(List<AdviceSaveDto> medicineList, Date curDate, String adviceOpType,
Long organizationId, String signCode) { Long organizationId, String signCode) {
>>>>>>> v1.3
// 当前登录账号的科室id // 当前登录账号的科室id
Long orgId = SecurityUtils.getLoginUser().getOrgId(); Long orgId = SecurityUtils.getLoginUser().getOrgId();
// 保存操作 // 保存操作
@@ -452,8 +383,8 @@ 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()
@@ -532,14 +463,6 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
medicationRequest.setInfusionFlag(adviceSaveDto.getInjectFlag()); // 输液标志 medicationRequest.setInfusionFlag(adviceSaveDto.getInjectFlag()); // 输液标志
medicationRequest.setSortNumber(adviceSaveDto.getSortNumber()); // 排序号 medicationRequest.setSortNumber(adviceSaveDto.getSortNumber()); // 排序号
} }
<<<<<<< HEAD
iMedicationRequestService.saveOrUpdate(medicationRequest);
if (is_save) {
// 处理药品发放
Long dispenseId =
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
=======
if (medicationRequest.getId() == null) { if (medicationRequest.getId() == null) {
firstTimeSave = true; firstTimeSave = true;
} }
@@ -549,9 +472,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
} }
if (is_save) { if (is_save) {
// 处理药品发放 // 处理药品发放
Long dispenseId = Long dispenseId
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType()); = iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
>>>>>>> v1.3
// 保存药品费用项 // 保存药品费用项
chargeItem = new ChargeItem(); chargeItem = new ChargeItem();
@@ -586,10 +508,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
} }
} }
<<<<<<< HEAD
=======
return medRequestIdList; return medRequestIdList;
>>>>>>> v1.3
} }
/** /**
@@ -606,8 +525,8 @@ 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()
@@ -666,12 +585,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
iDeviceRequestService.saveOrUpdate(deviceRequest); iDeviceRequestService.saveOrUpdate(deviceRequest);
if (is_save) { if (is_save) {
// 处理耗材发放 // 处理耗材发放
Long dispenseId = Long dispenseId
<<<<<<< HEAD = iDeviceDispenseService.handleDeviceDispense(deviceRequest, adviceSaveDto.getDbOpType());
iDeviceDispenseService.handleDeviceDispense(deviceRequest, adviceSaveDto.getDbOpType());
=======
iDeviceDispenseService.handleDeviceDispense(deviceRequest, adviceSaveDto.getDbOpType());
>>>>>>> v1.3
// 保存耗材费用项 // 保存耗材费用项
chargeItem = new ChargeItem(); chargeItem = new ChargeItem();
@@ -721,8 +636,8 @@ 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()
@@ -816,8 +731,8 @@ 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) {
// 诊疗子项参数类 // 诊疗子项参数类
@@ -840,30 +755,18 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
adviceSaveDto.setRequestId(serviceRequest.getId()); adviceSaveDto.setRequestId(serviceRequest.getId());
try { try {
// 查询诊疗定义 // 查询诊疗定义
ActivityDefinition activityDefinition = ActivityDefinition activityDefinition
<<<<<<< HEAD = iActivityDefinitionService.getById(adviceSaveDto.getAdviceDefinitionId());
iActivityDefinitionService.getById(adviceSaveDto.getAdviceDefinitionId());
if (activityDefinition != null) { if (activityDefinition != null) {
// 检验 或 检查 // 检验 或 检查
if (ActivityType.PROOF.getValue().equals(activityDefinition.getTypeEnum()) if (ActivityType.PROOF.getValue().equals(activityDefinition.getTypeEnum())
|| ActivityType.TEST.getValue().equals(activityDefinition.getTypeEnum())) { || ActivityType.TEST.getValue().equals(activityDefinition.getTypeEnum())) {
=======
iActivityDefinitionService.getById(adviceSaveDto.getAdviceDefinitionId());
if (activityDefinition != null) {
// 检验 或 检查
if (ActivityType.PROOF.getValue().equals(activityDefinition.getTypeEnum())
|| ActivityType.TEST.getValue().equals(activityDefinition.getTypeEnum())) {
>>>>>>> v1.3
doctorStationSendApplyUtil.sendCrossSystemApply(adviceSaveDto, organizationId, curDate); doctorStationSendApplyUtil.sendCrossSystemApply(adviceSaveDto, organizationId, curDate);
} }
} }
} catch (Exception e) { } catch (Exception e) {
if (!Whether.YES.getCode() if (!Whether.YES.getCode()
<<<<<<< HEAD
.equals(TenantOptionUtil.getOptionContent(TenantOptionDict.LIS_PACS_ERROR_IGNORE))) { .equals(TenantOptionUtil.getOptionContent(TenantOptionDict.LIS_PACS_ERROR_IGNORE))) {
=======
.equals(TenantOptionUtil.getOptionContent(TenantOptionDict.LIS_PACS_ERROR_IGNORE))) {
>>>>>>> v1.3
throw e; throw e;
} }
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
@@ -884,15 +787,9 @@ 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,
<<<<<<< HEAD
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()); GenerateSource.DOCTOR_PRESCRIPTION.getValue());
=======
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.NO.getCode(),
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
>>>>>>> v1.3
for (RequestBaseDto requestBaseDto : requestBaseInfo) { for (RequestBaseDto requestBaseDto : requestBaseInfo) {
// 请求状态 // 请求状态
requestBaseDto requestBaseDto
@@ -934,9 +831,12 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
chargeItemList.forEach(item -> { chargeItemList.forEach(item -> {
switch (item.getServiceTable()) { switch (item.getServiceTable()) {
case CommonConstants.TableName.MED_MEDICATION_REQUEST -> medReqIdList.add(item.getServiceId()); case CommonConstants.TableName.MED_MEDICATION_REQUEST ->
case CommonConstants.TableName.WOR_DEVICE_REQUEST -> devReqIdList.add(item.getServiceId()); medReqIdList.add(item.getServiceId());
case CommonConstants.TableName.WOR_SERVICE_REQUEST -> serReqIdList.add(item.getServiceId()); case CommonConstants.TableName.WOR_DEVICE_REQUEST ->
devReqIdList.add(item.getServiceId());
case CommonConstants.TableName.WOR_SERVICE_REQUEST ->
serReqIdList.add(item.getServiceId());
} }
}); });
List<Long> chargeItemIdList = chargeItemList.stream().map(ChargeItem::getId).collect(Collectors.toList()); List<Long> chargeItemIdList = chargeItemList.stream().map(ChargeItem::getId).collect(Collectors.toList());
@@ -973,15 +873,9 @@ 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,
<<<<<<< HEAD
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()); GenerateSource.DOCTOR_PRESCRIPTION.getValue());
=======
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.YES.getCode(),
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
>>>>>>> v1.3
for (RequestBaseDto requestBaseDto : requestBaseInfo) { for (RequestBaseDto requestBaseDto : requestBaseInfo) {
// 请求状态 // 请求状态
requestBaseDto requestBaseDto
@@ -1098,7 +992,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
} }
/** /**
* 根据searchKey对医嘱列表进行排序adviceName以searchKey(汉字)开头的排在前面 | pyStr以searchKey(字母)开头的排在前面 * 根据searchKey对医嘱列表进行排序adviceName以searchKey(汉字)开头的排在前面 |
* pyStr以searchKey(字母)开头的排在前面
* *
* @param adviceList 医嘱列表 * @param adviceList 医嘱列表
* @param searchKey 搜索关键字 * @param searchKey 搜索关键字
@@ -1113,10 +1008,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
adviceList.sort((a, b) -> { adviceList.sort((a, b) -> {
// 根据searchKey类型选择不同的字段 // 根据searchKey类型选择不同的字段
String aValue = String aValue
isPinyinSearch ? (a.getPyStr() != null ? a.getPyStr() : a.getAdviceName()) : a.getAdviceName(); = isPinyinSearch ? (a.getPyStr() != null ? a.getPyStr() : a.getAdviceName()) : a.getAdviceName();
String bValue = String bValue
isPinyinSearch ? (b.getPyStr() != null ? b.getPyStr() : b.getAdviceName()) : b.getAdviceName(); = isPinyinSearch ? (b.getPyStr() != null ? b.getPyStr() : b.getAdviceName()) : b.getAdviceName();
// 处理可能的null值 // 处理可能的null值
if (aValue == null && bValue == null) { if (aValue == null && bValue == null) {

View File

@@ -192,8 +192,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
List<EncounterDiagnosis> diagnosisList = iEncounterDiagnosisService.getDiagnosisList(encounterId); List<EncounterDiagnosis> diagnosisList = iEncounterDiagnosisService.getDiagnosisList(encounterId);
List<EncounterDiagnosis> newdiagnosisList = new ArrayList<>(); List<EncounterDiagnosis> newdiagnosisList = new ArrayList<>();
newdiagnosisList = newdiagnosisList
diagnosisList.stream().filter(diagno -> diagno.getDeleteFlag().equals("0") && diagno.getDiagSrtNo() != null) = diagnosisList.stream().filter(diagno -> diagno.getDeleteFlag().equals("0") && diagno.getDiagSrtNo() != null)
.collect(Collectors.toList()); .collect(Collectors.toList());
newdiagnosisList = newdiagnosisList.stream().sorted((d1, d2) -> d2.getDiagSrtNo().compareTo(d1.getDiagSrtNo())) // 降序 newdiagnosisList = newdiagnosisList.stream().sorted((d1, d2) -> d2.getDiagSrtNo().compareTo(d1.getDiagSrtNo())) // 降序
@@ -290,8 +290,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
public R<?> getTcmEncounterDiagnosis(Long encounterId) { public R<?> getTcmEncounterDiagnosis(Long encounterId) {
HashMap<String, Object> resultMap = new HashMap<>(); HashMap<String, Object> resultMap = new HashMap<>();
// 中医就诊诊断信息 // 中医就诊诊断信息
List<DiagnosisQueryDto> tcmEncounterDiagnosis = List<DiagnosisQueryDto> tcmEncounterDiagnosis
doctorStationChineseMedicalAppMapper.getTcmEncounterDiagnosis(encounterId); = doctorStationChineseMedicalAppMapper.getTcmEncounterDiagnosis(encounterId);
// 病 // 病
List<DiagnosisQueryDto> illness = tcmEncounterDiagnosis.stream().filter( List<DiagnosisQueryDto> illness = tcmEncounterDiagnosis.stream().filter(
e -> ConditionDefinitionSource.TRADITIONAL_CHINESE_MEDICINE_DIAGNOSIS.getValue().equals(e.getSourceEnum())) e -> ConditionDefinitionSource.TRADITIONAL_CHINESE_MEDICINE_DIAGNOSIS.getValue().equals(e.getSourceEnum()))
@@ -358,12 +358,12 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
// 是否代煎 // 是否代煎
Integer sufferingFlag = adviceSaveParam.getSufferingFlag(); Integer sufferingFlag = adviceSaveParam.getSufferingFlag();
// 中药代煎定义id // 中药代煎定义id
Long sufferingDefinitionId = Long sufferingDefinitionId
iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.SUFFERING_TCM); = iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.SUFFERING_TCM);
// 保存时,校验库存 // 保存时,校验库存
if (is_save) { if (is_save) {
List<AdviceSaveDto> medUpdateList = List<AdviceSaveDto> medUpdateList
medicineList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList()); = medicineList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList());
// 编辑时,释放本身占用的库存发放 // 编辑时,释放本身占用的库存发放
for (AdviceSaveDto adviceSaveDto : medUpdateList) { for (AdviceSaveDto adviceSaveDto : medUpdateList) {
iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId()); iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId());
@@ -381,8 +381,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
// 费用项 // 费用项
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()
@@ -403,8 +403,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
if (is_sign) { if (is_sign) {
// 按groupId分组 // 按groupId分组
Map<Long, List<AdviceSaveDto>> groupMap = Map<Long, List<AdviceSaveDto>> groupMap
insertOrUpdateList.stream().collect(Collectors.groupingBy(AdviceSaveDto::getGroupId)); = insertOrUpdateList.stream().collect(Collectors.groupingBy(AdviceSaveDto::getGroupId));
// 为每个分组生成唯一的处方号 // 为每个分组生成唯一的处方号
groupMap.forEach((groupId, groupList) -> { groupMap.forEach((groupId, groupList) -> {
// 先查询当前groupId是否已经被签发生成过处方号 // 先查询当前groupId是否已经被签发生成过处方号
@@ -413,8 +413,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
if (!list.isEmpty() && StringUtils.isNotEmpty(list.get(0).getPrescriptionNo())) { if (!list.isEmpty() && StringUtils.isNotEmpty(list.get(0).getPrescriptionNo())) {
groupList.forEach(dto -> dto.setPrescriptionNo(list.get(0).getPrescriptionNo())); groupList.forEach(dto -> dto.setPrescriptionNo(list.get(0).getPrescriptionNo()));
} else { } else {
String prescriptionNo = String prescriptionNo
assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8); = assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8);
groupList.forEach(dto -> dto.setPrescriptionNo(prescriptionNo)); groupList.forEach(dto -> dto.setPrescriptionNo(prescriptionNo));
} }
}); });
@@ -467,8 +467,8 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
iMedicationRequestService.saveOrUpdate(medicationRequest); iMedicationRequestService.saveOrUpdate(medicationRequest);
if (is_save) { if (is_save) {
// 处理药品发放 // 处理药品发放
Long dispenseId = Long dispenseId
iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType()); = iMedicationDispenseService.handleMedicationDispense(medicationRequest, adviceSaveDto.getDbOpType());
// 保存药品费用项 // 保存药品费用项
chargeItem = new ChargeItem(); chargeItem = new ChargeItem();
@@ -533,11 +533,7 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
// 对应的诊疗医嘱信息 // 对应的诊疗医嘱信息
AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null,
<<<<<<< HEAD
null, null, organizationId, 1, 1, Whether.NO.getValue(), List.of(3)).getRecords().get(0);
=======
null, null, organizationId, 1, 1, Whether.NO.getValue(), List.of(3), null).getRecords().get(0); null, null, organizationId, 1, 1, Whether.NO.getValue(), List.of(3), null).getRecords().get(0);
>>>>>>> v1.3
if (activityAdviceBaseDto != null) { if (activityAdviceBaseDto != null) {
// 费用定价 // 费用定价
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0); AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);

View File

@@ -44,17 +44,6 @@ public class DoctorStationAdviceController {
*/ */
@GetMapping(value = "/advice-base-info") @GetMapping(value = "/advice-base-info")
public R<?> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, public R<?> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto,
<<<<<<< HEAD
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "locationId", required = false) Long locationId,
@RequestParam(value = "adviceDefinitionIdParamList", required = false) List<Long> adviceDefinitionIdParamList,
@RequestParam(value = "organizationId", defaultValue = "0") Long organizationId,
@RequestParam(value = "adviceTypes", defaultValue = "1,2,3") List<Integer> adviceTypes,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
return R.ok(iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, searchKey, locationId,
adviceDefinitionIdParamList, organizationId, pageNo, pageSize, Whether.NO.getValue(), adviceTypes));
=======
@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,
@@ -64,27 +53,18 @@ public class DoctorStationAdviceController {
@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, null)); adviceDefinitionIdParamList, organizationId, pageNo, pageSize, Whether.NO.getValue(), adviceTypes, null));
>>>>>>> v1.3
} }
/** /**
* 查询医嘱绑定信息 * 查询医嘱绑定信息
* *
* @param typeCode 1:用法绑东西 2:诊疗绑东西 * @param typeCode 1:用法绑东西 2:诊疗绑东西
<<<<<<< HEAD
* @param itemNo 用法的code 或者 诊疗定义id * @param itemNo 用法的code 或者 诊疗定义id
=======
* @param itemNo 用法的code 或者 诊疗定义id
>>>>>>> v1.3
* @return 医嘱绑定信息 * @return 医嘱绑定信息
*/ */
@GetMapping(value = "/order-bind-info") @GetMapping(value = "/order-bind-info")
public R<?> getOrderBindInfo(@RequestParam(value = "typeCode") String typeCode, public R<?> getOrderBindInfo(@RequestParam(value = "typeCode") String typeCode,
<<<<<<< HEAD
@RequestParam(value = "itemNo") String itemNo) { @RequestParam(value = "itemNo") String itemNo) {
=======
@RequestParam(value = "itemNo") String itemNo) {
>>>>>>> v1.3
return R.ok(iDoctorStationAdviceAppService.getOrderBindInfo(typeCode, itemNo)); return R.ok(iDoctorStationAdviceAppService.getOrderBindInfo(typeCode, itemNo));
} }

View File

@@ -17,10 +17,14 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class AdviceBaseDto { public class AdviceBaseDto {
/** 医嘱类型 */ /**
* 医嘱类型
*/
private Integer adviceType; // 1:药品 , 2: 耗材 , 3:项目 private Integer adviceType; // 1:药品 , 2: 耗材 , 3:项目
/** 编号 */ /**
* 编号
*/
private String busNo; private String busNo;
/** /**
@@ -28,22 +32,34 @@ public class AdviceBaseDto {
*/ */
private String categoryCode; private String categoryCode;
/** 药品性质 */ /**
* 药品性质
*/
private String pharmacologyCategoryCode; private String pharmacologyCategoryCode;
/** 拆零比 */ /**
* 拆零比
*/
private BigDecimal partPercent; private BigDecimal partPercent;
/** 剂量换算 */ /**
* 剂量换算
*/
private BigDecimal unitConversionRatio; private BigDecimal unitConversionRatio;
/** 拆分属性-门诊 */ /**
* 拆分属性-门诊
*/
private Integer partAttributeEnum; private Integer partAttributeEnum;
/** 住院临时医嘱拆分属性 */ /**
* 住院临时医嘱拆分属性
*/
private Integer thoPartAttributeEnum; private Integer thoPartAttributeEnum;
/** 医嘱定义ID */ /**
* 医嘱定义ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long adviceDefinitionId; private Long adviceDefinitionId;
@@ -58,7 +74,9 @@ public class AdviceBaseDto {
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long positionId; private Long positionId;
/** 医嘱名称 */ /**
* 医嘱名称
*/
private String adviceName; private String adviceName;
/** /**
@@ -66,16 +84,24 @@ public class AdviceBaseDto {
*/ */
private String adviceBusNo; private String adviceBusNo;
/** 拼音码 */ /**
* 拼音码
*/
private String pyStr; private String pyStr;
/** 五笔码 */ /**
* 五笔码
*/
private String wbStr; private String wbStr;
/** 医保编码 */ /**
* 医保编码
*/
private String ybNo; private String ybNo;
/** 商品名称 */ /**
* 商品名称
*/
private String productName; private String productName;
/** /**
@@ -84,20 +110,28 @@ public class AdviceBaseDto {
private Integer activityType; private Integer activityType;
private String activityType_enumText; private String activityType_enumText;
/** 是否皮试 */ /**
* 是否皮试
*/
private Integer skinTestFlag; private Integer skinTestFlag;
private String skinTestFlag_enumText; private String skinTestFlag_enumText;
/** 是否为注射药物 */ /**
* 是否为注射药物
*/
private Integer injectFlag; private Integer injectFlag;
private String injectFlag_enumText; private String injectFlag_enumText;
/** 包装单位 */ /**
* 包装单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
/** 最小单位 */ /**
* 最小单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String minUnitCode; private String minUnitCode;
private String minUnitCode_dictText; private String minUnitCode_dictText;
@@ -126,7 +160,9 @@ public class AdviceBaseDto {
*/ */
private String dose; private String dose;
/** 剂量单位 */ /**
* 剂量单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String doseUnitCode; private String doseUnitCode;
private String doseUnitCode_dictText; private String doseUnitCode_dictText;
@@ -136,7 +172,9 @@ public class AdviceBaseDto {
*/ */
private String supplier; private String supplier;
/** 供应商ID */ /**
* 供应商ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long supplierId; private Long supplierId;
@@ -145,14 +183,20 @@ public class AdviceBaseDto {
*/ */
private String manufacturer; private String manufacturer;
/** 费用定价主表ID */ /**
* 费用定价主表ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long chargeItemDefinitionId; private Long chargeItemDefinitionId;
/** 所属科室 */ /**
* 所属科室
*/
private Long orgId; private Long orgId;
/** 所在位置 */ /**
* 所在位置
*/
private Long locationId; private Long locationId;
/** /**
@@ -160,7 +204,9 @@ public class AdviceBaseDto {
*/ */
private List<AdviceInventoryDto> inventoryList; private List<AdviceInventoryDto> inventoryList;
/** 默认产品批号 */ /**
* 默认产品批号
*/
private String defaultLotNumber; private String defaultLotNumber;
/** /**
@@ -168,24 +214,26 @@ public class AdviceBaseDto {
*/ */
private List<AdvicePriceDto> priceList; private List<AdvicePriceDto> priceList;
/** 是否限制使用 */ /**
* 是否限制使用
*/
private Integer restrictedFlag; private Integer restrictedFlag;
/** 限制使用范围 */ /**
* 限制使用范围
*/
private String restrictedScope; private String restrictedScope;
/** 用药说明 */ /**
* 用药说明
*/
@Dict(dictCode = "dosage_instruction") @Dict(dictCode = "dosage_instruction")
private String dosageInstruction; private String dosageInstruction;
private String dosageInstruction_dictText; private String dosageInstruction_dictText;
<<<<<<< HEAD
=======
/* /*
收费项目等级 收费项目等级
*/ */
@Dict(dictCode = "chrgitm_lv") @Dict(dictCode = "chrgitm_lv")
private String chrgitmLv; private String chrgitmLv;
private String chrgitmLv_dictText; private String chrgitmLv_dictText;
>>>>>>> v1.3
} }

View File

@@ -18,7 +18,9 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class RequestBaseDto { public class RequestBaseDto {
/** 医嘱类型 */ /**
* 医嘱类型
*/
private Integer adviceType; // 1:药品 , 2: 耗材 , 3:项目 private Integer adviceType; // 1:药品 , 2: 耗材 , 3:项目
/** /**
@@ -26,7 +28,9 @@ public class RequestBaseDto {
*/ */
private String uniqueKey; // requestId拼接adviceType private String uniqueKey; // requestId拼接adviceType
/** 处方号 */ /**
* 处方号
*/
private String prescriptionNo; private String prescriptionNo;
/** /**
@@ -37,7 +41,9 @@ public class RequestBaseDto {
private Long requesterId; private Long requesterId;
private String requesterId_dictText; private String requesterId_dictText;
/** 请求时间 */ /**
* 请求时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date requestTime; private Date requestTime;
@@ -74,7 +80,9 @@ public class RequestBaseDto {
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long chargeItemId; private Long chargeItemId;
/** 医嘱名称 */ /**
* 医嘱名称
*/
private String adviceName; private String adviceName;
/** /**
@@ -82,30 +90,44 @@ public class RequestBaseDto {
*/ */
private String volume; private String volume;
/** 产品批号 */ /**
* 产品批号
*/
private String lotNumber; private String lotNumber;
/** 请求数量 */ /**
* 请求数量
*/
private Integer quantity; private Integer quantity;
/** 请求单位编码 */ /**
* 请求单位编码
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
/** 请求状态 */ /**
* 请求状态
*/
private Integer statusEnum; private Integer statusEnum;
private String statusEnum_enumText; private String statusEnum_enumText;
/** 收费状态 */ /**
* 收费状态
*/
private Integer chargeStatus; private Integer chargeStatus;
private String chargeStatus_enumText; private String chargeStatus_enumText;
/** 是否皮试 */ /**
* 是否皮试
*/
private Integer skinTestFlag; private Integer skinTestFlag;
private String skinTestFlag_enumText; private String skinTestFlag_enumText;
/** 是否为注射药物 */ /**
* 是否为注射药物
*/
private Integer injectFlag; private Integer injectFlag;
private String injectFlag_enumText; private String injectFlag_enumText;
@@ -128,7 +150,9 @@ public class RequestBaseDto {
*/ */
private BigDecimal dose; private BigDecimal dose;
/** 剂量单位 */ /**
* 剂量单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String doseUnitCode; private String doseUnitCode;
private String doseUnitCode_dictText; private String doseUnitCode_dictText;
@@ -149,10 +173,14 @@ public class RequestBaseDto {
*/ */
private String positionName; private String positionName;
/** 用药天数 */ /**
* 用药天数
*/
private Integer dispensePerDuration; private Integer dispensePerDuration;
/** 拆零比 */ /**
* 拆零比
*/
private BigDecimal partPercent; private BigDecimal partPercent;
/** /**
@@ -170,16 +198,17 @@ public class RequestBaseDto {
*/ */
private Integer sortNumber; private Integer sortNumber;
/** 用药说明 */ /**
* 用药说明
*/
@Dict(dictCode = "dosage_instruction") @Dict(dictCode = "dosage_instruction")
private String dosageInstruction; private String dosageInstruction;
private String dosageInstruction_dictText; private String dosageInstruction_dictText;
<<<<<<< HEAD /**
======= * 请求基于什么的ID
/** 请求基于什么的ID */ */
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long basedOnId; private Long basedOnId;
>>>>>>> v1.3
} }

View File

@@ -153,8 +153,6 @@ public interface DoctorStationAdviceAppMapper {
List<OrderBindInfoDto> getOrderBindInfo(@Param("typeCode") String typeCode, @Param("status") Integer status, List<OrderBindInfoDto> getOrderBindInfo(@Param("typeCode") String typeCode, @Param("status") Integer status,
@Param("itemNo") String itemNo); @Param("itemNo") String itemNo);
<<<<<<< HEAD
=======
/** /**
* 查询检验检查开立历史(近30天) * 查询检验检查开立历史(近30天)
* *
@@ -177,5 +175,4 @@ public interface DoctorStationAdviceAppMapper {
List<ProofAndTestResultDto> getProofAndTestResult(@Param("encounterId") Long encounterId, List<ProofAndTestResultDto> getProofAndTestResult(@Param("encounterId") Long encounterId,
@Param("status") Integer status, @Param("typeEnum") Integer typeEnum); @Param("status") Integer status, @Param("typeEnum") Integer typeEnum);
>>>>>>> v1.3
} }

View File

@@ -10,10 +10,7 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
<<<<<<< HEAD
=======
import com.core.common.enums.TenantOptionDict; import com.core.common.enums.TenantOptionDict;
>>>>>>> v1.3
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.core.common.utils.StringUtils; import com.core.common.utils.StringUtils;
@@ -80,19 +77,19 @@ public class AdviceUtils {
*/ */
public String checkInventory(List<AdviceSaveDto> adviceSaveList) { public String checkInventory(List<AdviceSaveDto> adviceSaveList) {
// 医嘱定义ID集合 // 医嘱定义ID集合
List<Long> adviceDefinitionIdList = List<Long> adviceDefinitionIdList
adviceSaveList.stream().map(AdviceSaveDto::getAdviceDefinitionId).collect(Collectors.toList()); = adviceSaveList.stream().map(AdviceSaveDto::getAdviceDefinitionId).collect(Collectors.toList());
// 医嘱库存集合 // 医嘱库存集合
List<AdviceInventoryDto> adviceInventoryList = List<AdviceInventoryDto> adviceInventoryList
doctorStationAdviceAppMapper.getAdviceInventory(null, adviceDefinitionIdList, = doctorStationAdviceAppMapper.getAdviceInventory(null, 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
this.subtractInventory(adviceInventoryList, adviceDraftInventoryList); = this.subtractInventory(adviceInventoryList, adviceDraftInventoryList);
// 检查库存 // 检查库存
for (AdviceSaveDto saveDto : adviceSaveList) { for (AdviceSaveDto saveDto : adviceSaveList) {
boolean matched = false; boolean matched = false;
@@ -135,19 +132,19 @@ public class AdviceUtils {
*/ */
public String checkExeMedInventory(List<MedicationRequestUseExe> medUseExeList) { public String checkExeMedInventory(List<MedicationRequestUseExe> medUseExeList) {
// 医嘱定义id集合 // 医嘱定义id集合
List<Long> adviceDefinitionIdList = List<Long> adviceDefinitionIdList
medUseExeList.stream().map(MedicationRequestUseExe::getMedicationId).collect(Collectors.toList()); = medUseExeList.stream().map(MedicationRequestUseExe::getMedicationId).collect(Collectors.toList());
// 医嘱库存集合 // 医嘱库存集合
List<AdviceInventoryDto> adviceInventoryList = List<AdviceInventoryDto> adviceInventoryList
doctorStationAdviceAppMapper.getAdviceInventory(null, adviceDefinitionIdList, = doctorStationAdviceAppMapper.getAdviceInventory(null, 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
this.subtractInventory(adviceInventoryList, adviceDraftInventoryList); = this.subtractInventory(adviceInventoryList, adviceDraftInventoryList);
// 生命提示信息集合 // 生命提示信息集合
List<String> tipsList = new ArrayList<>(); List<String> tipsList = new ArrayList<>();
for (MedicationRequestUseExe medicationRequestUseExe : medUseExeList) { for (MedicationRequestUseExe medicationRequestUseExe : medUseExeList) {
@@ -289,14 +286,9 @@ public class AdviceUtils {
BigDecimal newQty = inventory.getQuantity().subtract(draftQty); BigDecimal newQty = inventory.getQuantity().subtract(draftQty);
inventory.setQuantity(newQty.compareTo(BigDecimal.ZERO) >= 0 ? newQty : BigDecimal.ZERO); inventory.setQuantity(newQty.compareTo(BigDecimal.ZERO) >= 0 ? newQty : BigDecimal.ZERO);
} }
<<<<<<< HEAD
return inventory;
}).collect(Collectors.toList());
=======
result.add(inventory); result.add(inventory);
} }
return result; return result;
>>>>>>> v1.3
} }
/** /**
@@ -320,8 +312,9 @@ public class AdviceUtils {
try { try {
// 将JSON字符串转换为List<ActivityChildJsonDto> // 将JSON字符串转换为List<ActivityChildJsonDto>
List<ActivityChildJsonDto> activityChildJsonDtoList = List<ActivityChildJsonDto> activityChildJsonDtoList
objectMapper.readValue(childrenJson, new TypeReference<>() {}); = objectMapper.readValue(childrenJson, new TypeReference<>() {
});
// 创建子项的诊疗请求 // 创建子项的诊疗请求
Long adviceDefinitionId; // 诊疗医嘱定义ID Long adviceDefinitionId; // 诊疗医嘱定义ID
BigDecimal quantity; // 子项请求数量 BigDecimal quantity; // 子项请求数量
@@ -337,8 +330,8 @@ public class AdviceUtils {
adviceBaseDto = new AdviceBaseDto(); adviceBaseDto = new AdviceBaseDto();
adviceBaseDto.setAdviceDefinitionId(adviceDefinitionId); adviceBaseDto.setAdviceDefinitionId(adviceDefinitionId);
// 对应的子项诊疗医嘱信息 // 对应的子项诊疗医嘱信息
AdviceBaseDto activityAdviceBaseDto = AdviceBaseDto activityAdviceBaseDto
iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, null, null, organizationId, 1, = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null, null, null, organizationId, 1,
1, Whether.NO.getValue(), List.of(1, 2, 3), null).getRecords().get(0); 1, Whether.NO.getValue(), List.of(1, 2, 3), null).getRecords().get(0);
if (activityAdviceBaseDto != null) { if (activityAdviceBaseDto != null) {
// 费用定价 // 费用定价

View File

@@ -18,16 +18,6 @@ import com.openhis.web.document.util.EnumUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
<<<<<<< HEAD
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
=======
>>>>>>> v1.3
/** /**
* 文书定义 controller * 文书定义 controller
@@ -40,6 +30,7 @@ import java.util.Map;
@Slf4j @Slf4j
@AllArgsConstructor @AllArgsConstructor
public class DocDefinitionController { public class DocDefinitionController {
private final IDocDefinitionAppService iDocDefinitionAppService; private final IDocDefinitionAppService iDocDefinitionAppService;
/** /**
@@ -56,13 +47,8 @@ public class DocDefinitionController {
// 获取权限枚举列表 // 获取权限枚举列表
map.put("permissions", EnumUtil.toMapList(DocPermissionEnum.class)); map.put("permissions", EnumUtil.toMapList(DocPermissionEnum.class));
<<<<<<< HEAD
// 使用范围枚举 // 使用范围枚举
List<String> noInUseCodes = new ArrayList<>(); List<String> noInUseCodes = new ArrayList<>();
=======
// 使用范围枚举
List<String> noInUseCodes = new ArrayList<>();
>>>>>>> v1.3
noInUseCodes.add(DocUseRangeEnum.USE_BY_SELF.getCode()); noInUseCodes.add(DocUseRangeEnum.USE_BY_SELF.getCode());
map.put("useRanges", EnumUtil.toMapListFilter(DocUseRangeEnum.class, noInUseCodes)); map.put("useRanges", EnumUtil.toMapListFilter(DocUseRangeEnum.class, noInUseCodes));
return R.ok(map); return R.ok(map);

View File

@@ -35,11 +35,7 @@ import com.openhis.web.inhospitalcharge.appservice.IInHospitalRegisterAppService
import com.openhis.web.inhospitalcharge.dto.*; import com.openhis.web.inhospitalcharge.dto.*;
import com.openhis.web.inhospitalcharge.mapper.InHospitalRegisterAppMapper; import com.openhis.web.inhospitalcharge.mapper.InHospitalRegisterAppMapper;
import com.openhis.web.patientmanage.appservice.IPatientInformationService; import com.openhis.web.patientmanage.appservice.IPatientInformationService;
<<<<<<< HEAD
import com.openhis.web.patientmanage.dto.PatientInformationDto;
=======
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto; import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
>>>>>>> v1.3
import com.openhis.yb.service.YbManager; import com.openhis.yb.service.YbManager;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -179,8 +175,8 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
String searchKey, String registeredFlag, Integer pageNo, Integer pageSize, HttpServletRequest request) { String searchKey, String registeredFlag, Integer pageNo, Integer pageSize, HttpServletRequest request) {
Integer encounterStatus = EncounterZyStatus.TO_BE_REGISTERED.getValue(); // 待登记 Integer encounterStatus = EncounterZyStatus.TO_BE_REGISTERED.getValue(); // 待登记
// 构建查询条件 // 构建查询条件
QueryWrapper<InHospitalRegisterQueryDto> queryWrapper = QueryWrapper<InHospitalRegisterQueryDto> queryWrapper
HisQueryUtils.buildQueryWrapper(inHospitalRegisterQueryDto, searchKey, = HisQueryUtils.buildQueryWrapper(inHospitalRegisterQueryDto, searchKey,
new HashSet<>(Arrays.asList("registrar", "source_name", "patient_name")), request); new HashSet<>(Arrays.asList("registrar", "source_name", "patient_name")), request);
IPage<InHospitalRegisterQueryDto> inHospitalRegisterInfo = inHospitalRegisterAppMapper IPage<InHospitalRegisterQueryDto> inHospitalRegisterInfo = inHospitalRegisterAppMapper

View File

@@ -56,16 +56,7 @@ public interface IATDManageAppService {
*/ */
R<?> getAdmissionPatientInfo(Long encounterId); R<?> getAdmissionPatientInfo(Long encounterId);
/** /**
<<<<<<< HEAD
* 住院患者待处理信息列表
*
* @param encounterId 住院id
* @return 待处理信息列表
*/
R<?> getInPatientPendingList(Long encounterId);
=======
* 住院患者待处理列表查询 * 住院患者待处理列表查询
* *
* @param inpatientAdviceParam 查询条件 * @param inpatientAdviceParam 查询条件
@@ -74,7 +65,6 @@ public interface IATDManageAppService {
* @return 住院患者医 * @return 住院患者医
*/ */
R<?> getInPatientPendingList(InpatientAdviceParam inpatientAdviceParam, Integer pageNo, Integer pageSize); R<?> getInPatientPendingList(InpatientAdviceParam inpatientAdviceParam, Integer pageNo, Integer pageSize);
>>>>>>> v1.3
/** /**
* 入科床位分配 * 入科床位分配
@@ -87,11 +77,7 @@ public interface IATDManageAppService {
/** /**
* 转科 * 转科
* *
<<<<<<< HEAD
* @param encounterId 住院id
=======
* @param encounterId 住院患者id * @param encounterId 住院患者id
>>>>>>> v1.3
* @return 结果 * @return 结果
*/ */
R<?> transferDepartment(Long encounterId); R<?> transferDepartment(Long encounterId);
@@ -99,12 +85,6 @@ public interface IATDManageAppService {
/** /**
* 出院 * 出院
* *
<<<<<<< HEAD
* @param encounterId 住院id
* @return 结果
*/
R<?> hospitalDischarge(Long encounterId);
=======
* @param encounterId 住院患者id * @param encounterId 住院患者id
* @return 结果 * @return 结果
*/ */
@@ -123,7 +103,8 @@ public interface IATDManageAppService {
* *
* @param encounterId 诊断id * @param encounterId 诊断id
* @return EncounterAccountDto 诊断账户金额 * @return EncounterAccountDto 诊断账户金额
**/ *
*/
R<?> getAmount(Long encounterId); R<?> getAmount(Long encounterId);
/** /**
@@ -131,7 +112,7 @@ public interface IATDManageAppService {
* *
* @param encounterId 诊断id * @param encounterId 诊断id
* @return PendingMedicationDto 待配/退药 * @return PendingMedicationDto 待配/退药
**/ *
*/
R<?> getPendingMedication(Long encounterId); R<?> getPendingMedication(Long encounterId);
>>>>>>> v1.3
} }

View File

@@ -17,21 +17,6 @@ import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryParam;
public interface IMedicineSummaryAppService { public interface IMedicineSummaryAppService {
/** /**
<<<<<<< HEAD
* 查询发药单信息
*
* @param dispenseFormSearchParam 查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求
* @return 发药单信息
*/
R<?> getMedicineDispenseFormPage(DispenseFormSearchParam dispenseFormSearchParam, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**
* 查询药品汇总单
=======
* 药品汇总单初始化 * 药品汇总单初始化
* *
* @return 初始化信息 * @return 初始化信息
@@ -40,26 +25,10 @@ public interface IMedicineSummaryAppService {
/** /**
* 查询发药单信息 * 查询发药单信息
>>>>>>> v1.3
* *
* @param dispenseFormSearchParam 查询条件 * @param dispenseFormSearchParam 查询条件
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
<<<<<<< HEAD
* @param searchKey 模糊查询关键字
* @param request 请求
* @return 药品汇总单
*/
R<?> getMedicineSummaryFormPage(DispenseFormSearchParam dispenseFormSearchParam, Integer pageNo, Integer pageSize,
String searchKey, HttpServletRequest request);
/**
* 查询药品汇总单详情
*
* @param summaryNo 汇总单号
* @return 药品汇总单详情
*/
=======
* @param request 请求 * @param request 请求
* @return 发药单信息 * @return 发药单信息
*/ */
@@ -85,7 +54,6 @@ public interface IMedicineSummaryAppService {
* @param summaryNo 汇总单号 * @param summaryNo 汇总单号
* @return 药品汇总单详情 * @return 药品汇总单详情
*/ */
>>>>>>> v1.3
R<?> getMedicineSummaryFormDetail(String summaryNo); R<?> getMedicineSummaryFormDetail(String summaryNo);
/** /**
@@ -102,16 +70,5 @@ public interface IMedicineSummaryAppService {
* @param summaryNo 汇总单号 * @param summaryNo 汇总单号
* @return 处理结果 * @return 处理结果
*/ */
<<<<<<< HEAD
R<?> checkInventoryItem(List<Long> devDispenseId, List<Long> medDispenseId);
/**
* 取消汇总
*
* @param summaryNo 汇总单号
* @return 处理结果
*/
=======
>>>>>>> v1.3
R<?> cancelSummary(String summaryNo); R<?> cancelSummary(String summaryNo);
} }

View File

@@ -1,8 +1,5 @@
package com.openhis.web.inhospitalnursestation.appservice; package com.openhis.web.inhospitalnursestation.appservice;
<<<<<<< HEAD
import com.core.common.core.domain.R;
=======
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@@ -13,48 +10,20 @@ import com.core.common.core.domain.R;
import com.openhis.administration.dto.CostDetailSearchParam; import com.openhis.administration.dto.CostDetailSearchParam;
import com.openhis.web.inhospitalnursestation.dto.InpatientAdviceParam; import com.openhis.web.inhospitalnursestation.dto.InpatientAdviceParam;
import com.openhis.web.regdoctorstation.dto.AdviceBatchOpParam; import com.openhis.web.regdoctorstation.dto.AdviceBatchOpParam;
>>>>>>> v1.3
import com.openhis.web.regdoctorstation.dto.RegAdviceSaveParam; import com.openhis.web.regdoctorstation.dto.RegAdviceSaveParam;
public interface INurseBillingAppService { public interface INurseBillingAppService {
/* /*
* 住院护士 划价添加 * 住院护士 划价添加
* @return * @return
*/ */
public R<?> addInNurseBilling(RegAdviceSaveParam regAdviceSaveParam); public R<?> addInNurseBilling(RegAdviceSaveParam regAdviceSaveParam);
<<<<<<< HEAD
/*
* 住院护士 划价列表 根据护士encounterId查询
* @return
*/
public R<?> getBillingListByEncounterId();
=======
>>>>>>> v1.3
/* /*
* 住院护士撤销划价 * 住院护士撤销划价
* @return * @return
*/ */
<<<<<<< HEAD
public R<?> deleteInNurseBilling();
/*
* 医嘱计费添加 诊疗 耗材
*/
public R<?> addOrderBilling();
/*
* 医嘱计费删除 诊疗 耗材
*/
public R<?> deleteOrderBilling();
/*
* 医嘱计费修改 诊疗 耗材
*/
public R<?> updateOrderBilling();
/*
根据医嘱id查询已计费的 耗材列表
* @return
*/
public R<?> getOrderBillingByRequestId();
=======
public R<?> deleteInNurseBilling(List<AdviceBatchOpParam> paramList); public R<?> deleteInNurseBilling(List<AdviceBatchOpParam> paramList);
/** /**
@@ -101,5 +70,4 @@ public interface INurseBillingAppService {
*/ */
void makeExcelFile(CostDetailSearchParam costDetailSearchParam, HttpServletRequest request, void makeExcelFile(CostDetailSearchParam costDetailSearchParam, HttpServletRequest request,
HttpServletResponse response); HttpServletResponse response);
>>>>>>> v1.3
} }

View File

@@ -5,10 +5,7 @@ import com.openhis.web.inhospitalnursestation.dto.OrgDeviceSummaryParam;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
<<<<<<< HEAD
=======
import java.util.List; import java.util.List;
>>>>>>> v1.3
/** /**
* 科室耗材盘点 应用实现接口 * 科室耗材盘点 应用实现接口
@@ -19,13 +16,6 @@ import java.util.List;
public interface IOrgDeviceStockTakeAppService { public interface IOrgDeviceStockTakeAppService {
/** /**
<<<<<<< HEAD
* 查询科室耗材汇总
*
* @param orgDeviceSummaryParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
=======
* 页面初始化 * 页面初始化
* *
* @return 初始化信息 * @return 初始化信息
@@ -36,18 +26,13 @@ public interface IOrgDeviceStockTakeAppService {
* 查询科室耗材汇总 * 查询科室耗材汇总
* *
* @param orgDeviceSummaryParam 查询条件 * @param orgDeviceSummaryParam 查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求 * @param request 请求
* @return 科室耗材汇总单 * @return 科室耗材汇总单
*/ */
<<<<<<< HEAD
R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, String startTime, String endTime,
=======
R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam,
>>>>>>> v1.3
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, String searchKey, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, String searchKey,
HttpServletRequest request); HttpServletRequest request);
@@ -57,9 +42,5 @@ public interface IOrgDeviceStockTakeAppService {
* *
* @return 科室耗材汇总单 * @return 科室耗材汇总单
*/ */
<<<<<<< HEAD
R<?> orgDeviceSummary(OrgDeviceSummaryParam orgDeviceSummaryParam);
=======
R<?> orgDeviceSummary(List<OrgDeviceSummaryParam> orgDeviceSummaryParamList); R<?> orgDeviceSummary(List<OrgDeviceSummaryParam> orgDeviceSummaryParamList);
>>>>>>> v1.3
} }

View File

@@ -174,11 +174,11 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
@Override @Override
public R<?> getAdmissionBedPage(AdmissionPageParam admissionPageParam, Integer pageNo, Integer pageSize) { public R<?> getAdmissionBedPage(AdmissionPageParam admissionPageParam, Integer pageNo, Integer pageSize) {
// 构建查询条件 // 构建查询条件
QueryWrapper<AdmissionPageParam> queryWrapper = QueryWrapper<AdmissionPageParam> queryWrapper
HisQueryUtils.buildQueryWrapper(admissionPageParam, null, null, null); = HisQueryUtils.buildQueryWrapper(admissionPageParam, null, null, null);
// 入院患者床位分页列表 // 入院患者床位分页列表
Page<AdmissionBedPageDto> admissionBedPage = Page<AdmissionBedPageDto> admissionBedPage
atdManageAppMapper.selectAdmissionBadPage(new Page<>(pageNo, pageSize), queryWrapper, = atdManageAppMapper.selectAdmissionBadPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterActivityStatus.ACTIVE.getValue(), LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(), EncounterActivityStatus.ACTIVE.getValue(), LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(),
LocationForm.BED.getValue(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(), LocationForm.BED.getValue(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(),
LocationStatus.INACTIVE.getValue(), ChargeItemStatus.BILLABLE.getValue(), LocationStatus.INACTIVE.getValue(), ChargeItemStatus.BILLABLE.getValue(),
@@ -207,8 +207,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
@Override @Override
public R<?> getAdmissionPatientInfo(Long encounterId) { public R<?> getAdmissionPatientInfo(Long encounterId) {
// 查询住院患者详细信息 // 查询住院患者详细信息
AdmissionPatientInfoDto admissionPatientInfoDto = AdmissionPatientInfoDto admissionPatientInfoDto
atdManageAppMapper.selectAdmissionPatientInfo(encounterId, EncounterActivityStatus.ACTIVE.getValue(), = atdManageAppMapper.selectAdmissionPatientInfo(encounterId, EncounterActivityStatus.ACTIVE.getValue(),
LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(), LocationForm.BED.getValue(), LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(), LocationForm.BED.getValue(),
ParticipantType.PRIMARY_NURSE.getCode(), ParticipantType.ATTENDING_DOCTOR.getCode(), ParticipantType.PRIMARY_NURSE.getCode(), ParticipantType.ATTENDING_DOCTOR.getCode(),
ParticipantType.ADMITTING_DOCTOR.getCode(), ParticipantType.CHIEF_DOCTOR.getCode()); ParticipantType.ADMITTING_DOCTOR.getCode(), ParticipantType.CHIEF_DOCTOR.getCode());
@@ -228,21 +228,6 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
} }
/** /**
<<<<<<< HEAD
* 住院患者待处理信息列表
*
* @param encounterId 住院id
* @return 待处理信息列表
*/
@Override
public R<?> getInPatientPendingList(Long encounterId) {
// List<InpatientAdviceDto> inPatientPendingList =
// atdManageAppMapper.selectInPatientPendingList(encounterId, EncounterActivityStatus.ACTIVE.getValue(),
// LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(), LocationForm.BED.getValue(),
// ParticipantType.PRIMARY_NURSE.getCode(), ParticipantType.ATTENDING_DOCTOR.getCode(),
// ParticipantType.ADMITTING_DOCTOR.getCode());
return null;
=======
* 住院患者医嘱查询 * 住院患者医嘱查询
* *
* @param inpatientAdviceParam 查询条件 * @param inpatientAdviceParam 查询条件
@@ -253,8 +238,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
@Override @Override
public R<?> getInPatientPendingList(InpatientAdviceParam inpatientAdviceParam, Integer pageNo, Integer pageSize) { public R<?> getInPatientPendingList(InpatientAdviceParam inpatientAdviceParam, Integer pageNo, Integer pageSize) {
// 构建查询条件 // 构建查询条件
QueryWrapper<InpatientAdviceParam> queryWrapper = QueryWrapper<InpatientAdviceParam> queryWrapper
HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null); = HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
// 患者医嘱分页列表 // 患者医嘱分页列表
Page<InpatientAdviceDto> inpatientAdvicePage = atdManageAppMapper.selectInpatientAdvicePage( Page<InpatientAdviceDto> inpatientAdvicePage = atdManageAppMapper.selectInpatientAdvicePage(
@@ -283,7 +268,6 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
} }
}); });
return R.ok(inpatientAdvicePage); return R.ok(inpatientAdvicePage);
>>>>>>> v1.3
} }
/** /**
@@ -343,12 +327,12 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
if (oldBedId != null) { if (oldBedId != null) {
// 判断目标床位是否已经被占用 // 判断目标床位是否已经被占用
if (targetEncounterId != null) { if (targetEncounterId != null) {
List<EncounterLocation> locationList = List<EncounterLocation> locationList
encounterLocationService.getEncounterLocationInfo(targetEncounterId, null); = encounterLocationService.getEncounterLocationInfo(targetEncounterId, null);
// 查询目标患者的入科时间 // 查询目标患者的入科时间
Date targetStartTime = null; Date targetStartTime = null;
Optional<EncounterLocation> encounterLocationOptional = Optional<EncounterLocation> encounterLocationOptional
locationList.stream().filter(x -> x.getFormEnum().equals(LocationForm.BED.getValue())) = locationList.stream().filter(x -> x.getFormEnum().equals(LocationForm.BED.getValue()))
.filter(x -> x.getStatusEnum().equals(EncounterActivityStatus.ACTIVE.getValue())).findFirst(); .filter(x -> x.getStatusEnum().equals(EncounterActivityStatus.ACTIVE.getValue())).findFirst();
if (encounterLocationOptional.isPresent()) { if (encounterLocationOptional.isPresent()) {
EncounterLocation encounterLocation = encounterLocationOptional.get(); EncounterLocation encounterLocation = encounterLocationOptional.get();
@@ -429,8 +413,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
encounterService.updatePriorityEnumById(encounterId, admissionPatientInfoDto.getPriorityEnum()); encounterService.updatePriorityEnumById(encounterId, admissionPatientInfoDto.getPriorityEnum());
} }
// 更新住院状态:已住院 // 更新住院状态:已住院
Integer result = Integer result
encounterService.updateEncounterStatus(encounterId, EncounterZyStatus.ADMITTED_TO_THE_HOSPITAL.getValue()); = encounterService.updateEncounterStatus(encounterId, EncounterZyStatus.ADMITTED_TO_THE_HOSPITAL.getValue());
if (result == 0) { if (result == 0) {
return R.fail("床位分配失败,请联系管理员"); return R.fail("床位分配失败,请联系管理员");
} }
@@ -442,18 +426,11 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
/** /**
* 转科 * 转科
* *
<<<<<<< HEAD
* @param encounterId 住院id
=======
* @param encounterId 住院患者id * @param encounterId 住院患者id
>>>>>>> v1.3
* @return 结果 * @return 结果
*/ */
@Override @Override
public R<?> transferDepartment(Long encounterId) { public R<?> transferDepartment(Long encounterId) {
<<<<<<< HEAD
return null;
=======
if (encounterId == null) { if (encounterId == null) {
return R.fail("转科失败,请选择有效的患者"); return R.fail("转科失败,请选择有效的患者");
} }
@@ -511,24 +488,16 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
encounter.setOrganizationId(orderProcess.getTargetOrganizationId()) encounter.setOrganizationId(orderProcess.getTargetOrganizationId())
.setStatusEnum(EncounterZyStatus.REGISTERED.getValue()); .setStatusEnum(EncounterZyStatus.REGISTERED.getValue());
return R.ok("转科成功"); return R.ok("转科成功");
>>>>>>> v1.3
} }
/** /**
* 出院 * 出院
* *
<<<<<<< HEAD
* @param encounterId 住院id
=======
* @param encounterId 住院患者id * @param encounterId 住院患者id
>>>>>>> v1.3
* @return 结果 * @return 结果
*/ */
@Override @Override
public R<?> hospitalDischarge(Long encounterId) { public R<?> hospitalDischarge(Long encounterId) {
<<<<<<< HEAD
return null;
=======
if (encounterId == null) { if (encounterId == null) {
return R.fail("出院失败,请选择有效的患者"); return R.fail("出院失败,请选择有效的患者");
} }
@@ -557,8 +526,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
if (!medicationDispenseList.isEmpty()) { if (!medicationDispenseList.isEmpty()) {
return R.fail("患者有待取的药品,请先取药"); return R.fail("患者有待取的药品,请先取药");
} }
int affectedRows = int affectedRows
encounterService.updateEncounterStatus(encounterId, EncounterZyStatus.DISCHARGED_FROM_HOSPITAL.getValue()); = encounterService.updateEncounterStatus(encounterId, EncounterZyStatus.DISCHARGED_FROM_HOSPITAL.getValue());
if (affectedRows > 0) { if (affectedRows > 0) {
return R.ok("出院成功"); return R.ok("出院成功");
} }
@@ -598,7 +567,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
* *
* @param encounterId 诊断id * @param encounterId 诊断id
* @return EncounterAccountDto 诊断账户金额 * @return EncounterAccountDto 诊断账户金额
**/ *
*/
@Override @Override
public R<?> getAmount(Long encounterId) { public R<?> getAmount(Long encounterId) {
return R.ok(atdManageAppMapper.getAmount(AccountType.PERSONAL_CASH_ACCOUNT.getCode(), return R.ok(atdManageAppMapper.getAmount(AccountType.PERSONAL_CASH_ACCOUNT.getCode(),
@@ -611,7 +581,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
* *
* @param encounterId 诊断id * @param encounterId 诊断id
* @return PendingMedicationDto 待配/退药 * @return PendingMedicationDto 待配/退药
**/ *
*/
@Override @Override
public R<?> getPendingMedication(Long encounterId) { public R<?> getPendingMedication(Long encounterId) {
Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
@@ -691,8 +662,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
// 获取患者ID // 获取患者ID
Encounter encounter = encounterService.getById(encounterId); Encounter encounter = encounterService.getById(encounterId);
// 创建体温单统计列表 // 创建体温单统计列表
List<DocStatisticsDto> data = List<DocStatisticsDto> data
((List<DocStatisticsDto>)docStatisticsAppService.queryByEncounterId(encounterId).getData()).stream() = ((List<DocStatisticsDto>) docStatisticsAppService.queryByEncounterId(encounterId).getData()).stream()
.filter(item -> DocDefinitionEnum.ADMISSION_VITAL_SIGNS.getValue().equals(item.getSource())).toList(); .filter(item -> DocDefinitionEnum.ADMISSION_VITAL_SIGNS.getValue().equals(item.getSource())).toList();
List<DocStatisticsDto> list = new ArrayList<>(data); List<DocStatisticsDto> list = new ArrayList<>(data);
map.keySet().forEach(key -> { map.keySet().forEach(key -> {
@@ -713,6 +684,5 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
if (!list.isEmpty()) { if (!list.isEmpty()) {
docStatisticsAppService.saveOrUpdateAdmissionSigns(list); docStatisticsAppService.saveOrUpdateAdmissionSigns(list);
} }
>>>>>>> v1.3
} }
} }

View File

@@ -21,10 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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;
<<<<<<< HEAD
=======
import com.core.common.enums.TenantOptionDict; import com.core.common.enums.TenantOptionDict;
>>>>>>> v1.3
import com.core.common.exception.ServiceException; import com.core.common.exception.ServiceException;
import com.core.common.utils.*; import com.core.common.utils.*;
import com.core.common.utils.bean.BeanUtils; import com.core.common.utils.bean.BeanUtils;
@@ -178,18 +175,18 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
Integer exeStatus = inpatientAdviceParam.getExeStatus(); Integer exeStatus = inpatientAdviceParam.getExeStatus();
inpatientAdviceParam.setExeStatus(null); inpatientAdviceParam.setExeStatus(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<InpatientAdviceParam> queryWrapper = QueryWrapper<InpatientAdviceParam> queryWrapper
HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null); = HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
// 手动拼接住院患者id条件 // 手动拼接住院患者id条件
if (encounterIds != null && !encounterIds.isEmpty()) { if (encounterIds != null && !encounterIds.isEmpty()) {
List<Long> encounterIdList = List<Long> encounterIdList
Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList(); = Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList();
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList); queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList);
} }
// 患者医嘱分页列表 // 患者医嘱分页列表
Page<InpatientAdviceDto> inpatientAdvicePage = Page<InpatientAdviceDto> inpatientAdvicePage
adviceProcessAppMapper.selectInpatientAdvicePage(new Page<>(pageNo, pageSize), queryWrapper, = adviceProcessAppMapper.selectInpatientAdvicePage(new Page<>(pageNo, pageSize), queryWrapper,
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST, CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST,
RequestStatus.DRAFT.getValue(), EncounterActivityStatus.ACTIVE.getValue(), LocationForm.BED.getValue(), RequestStatus.DRAFT.getValue(), EncounterActivityStatus.ACTIVE.getValue(), LocationForm.BED.getValue(),
ParticipantType.ADMITTING_DOCTOR.getCode(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(), ParticipantType.ADMITTING_DOCTOR.getCode(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(),
@@ -444,13 +441,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 根据执行记录新增取消执行记录 // 根据执行记录新增取消执行记录
Long newProcedureId = procedureService.addProcedureRecord(procedure.getEncounterId(), Long newProcedureId = procedureService.addProcedureRecord(procedure.getEncounterId(),
procedure.getPatientId(), procedure.getRequestId(), procedure.getRequestTable(), EventStatus.CANCEL, procedure.getPatientId(), procedure.getRequestId(), procedure.getRequestTable(), EventStatus.CANCEL,
<<<<<<< HEAD
ProcedureCategory.INPATIENT_ADVICE, null, procedure.getOccurrenceTime(), procedure.getGroupId(),
procedure.getId());
=======
ProcedureCategory.INPATIENT_ADVICE, null, procedure.getOccurrenceTime(), exeDate, ProcedureCategory.INPATIENT_ADVICE, null, procedure.getOccurrenceTime(), exeDate,
procedure.getGroupId(), procedure.getId()); procedure.getGroupId(), procedure.getId());
>>>>>>> v1.3
// 将旧的执行Id和新的执行Id存入map // 将旧的执行Id和新的执行Id存入map
procedureIdMap.put(procedure.getId(), newProcedureId); procedureIdMap.put(procedure.getId(), newProcedureId);
} }
@@ -463,18 +455,14 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 处理长期医嘱 // 处理长期医嘱
if (!longProcIdList.isEmpty()) { if (!longProcIdList.isEmpty()) {
// 长期药品 // 长期药品
List<MedicationDispense> longMedDispenseList = List<MedicationDispense> longMedDispenseList
medicationDispenseService.getMedDispenseByProcedureId(longProcIdList); = medicationDispenseService.getMedDispenseByProcedureId(longProcIdList);
// 分离已发药发药单和未发药发药单 // 分离已发药发药单和未发药发药单
for (MedicationDispense medicationDispense : longMedDispenseList) { for (MedicationDispense medicationDispense : longMedDispenseList) {
if (DispenseStatus.COMPLETED.getValue().equals(medicationDispense.getStatusEnum())) { if (DispenseStatus.COMPLETED.getValue().equals(medicationDispense.getStatusEnum())) {
longMedDispensedList.add(medicationDispense); longMedDispensedList.add(medicationDispense);
<<<<<<< HEAD
} else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum())) {
=======
} else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum()) } else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum())
|| DispenseStatus.SUMMARIZED.getValue().equals(medicationDispense.getStatusEnum())) { || DispenseStatus.SUMMARIZED.getValue().equals(medicationDispense.getStatusEnum())) {
>>>>>>> v1.3
longMedUndispenseList.add(medicationDispense); longMedUndispenseList.add(medicationDispense);
} }
} }
@@ -495,18 +483,14 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 处理临时医嘱 // 处理临时医嘱
if (!tempProcIdList.isEmpty()) { if (!tempProcIdList.isEmpty()) {
// 临时药品 // 临时药品
List<MedicationDispense> tempMedDispenseList = List<MedicationDispense> tempMedDispenseList
medicationDispenseService.getMedDispenseByProcedureId(tempProcIdList); = medicationDispenseService.getMedDispenseByProcedureId(tempProcIdList);
// 分离已发药发药单和未发药发药单 // 分离已发药发药单和未发药发药单
for (MedicationDispense medicationDispense : tempMedDispenseList) { for (MedicationDispense medicationDispense : tempMedDispenseList) {
if (DispenseStatus.COMPLETED.getValue().equals(medicationDispense.getStatusEnum())) { if (DispenseStatus.COMPLETED.getValue().equals(medicationDispense.getStatusEnum())) {
tempMedDispensedList.add(medicationDispense); tempMedDispensedList.add(medicationDispense);
<<<<<<< HEAD
} else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum())) {
=======
} else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum()) } else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum())
|| DispenseStatus.SUMMARIZED.getValue().equals(medicationDispense.getStatusEnum())) { || DispenseStatus.SUMMARIZED.getValue().equals(medicationDispense.getStatusEnum())) {
>>>>>>> v1.3
tempMedUndispenseList.add(medicationDispense); tempMedUndispenseList.add(medicationDispense);
} }
} }
@@ -537,20 +521,20 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 重新生成汇总发药单 // 重新生成汇总发药单
if (!medUndispenseList.isEmpty()) { if (!medUndispenseList.isEmpty()) {
// 查询所有汇总单号 // 查询所有汇总单号
List<String> summaryNoList = List<String> summaryNoList
medUndispenseList.stream().filter(x -> x.getSummaryNo() != null && !x.getSummaryNo().isEmpty()) = medUndispenseList.stream().filter(x -> x.getSummaryNo() != null && !x.getSummaryNo().isEmpty())
.map(MedicationDispense::getSummaryNo).distinct().toList(); .map(MedicationDispense::getSummaryNo).distinct().toList();
if (!summaryNoList.isEmpty()) { if (!summaryNoList.isEmpty()) {
// 查询所有被汇总的药品发放 // 查询所有被汇总的药品发放
List<MedicationDispense> medSummaryList = List<MedicationDispense> medSummaryList
medicationDispenseService.getMedDispenseBySummaryNo(summaryNoList); = medicationDispenseService.getMedDispenseBySummaryNo(summaryNoList);
// 被汇总的发药单 // 被汇总的发药单
Map<String, List<MedicationDispense>> medSummaryMap = Map<String, List<MedicationDispense>> medSummaryMap
medSummaryList.stream().filter(x -> x.getSummaryNo() != null) = medSummaryList.stream().filter(x -> x.getSummaryNo() != null)
.collect(Collectors.groupingBy(MedicationDispense::getSummaryNo)); .collect(Collectors.groupingBy(MedicationDispense::getSummaryNo));
// 被取消汇总的发药单 // 被取消汇总的发药单
Map<String, List<MedicationDispense>> medSummaryCancelMap = Map<String, List<MedicationDispense>> medSummaryCancelMap
medUndispenseList.stream().filter(x -> x.getSummaryNo() != null) = medUndispenseList.stream().filter(x -> x.getSummaryNo() != null)
.collect(Collectors.groupingBy(MedicationDispense::getSummaryNo)); .collect(Collectors.groupingBy(MedicationDispense::getSummaryNo));
// 过滤掉被取消汇总的发药单,重新做成汇总单 // 过滤掉被取消汇总的发药单,重新做成汇总单
Map<String, List<MedicationDispense>> reSummaryMap = new HashMap<>(); Map<String, List<MedicationDispense>> reSummaryMap = new HashMap<>();
@@ -563,8 +547,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 如果存在取消记录,需要过滤掉被取消的发药单 // 如果存在取消记录,需要过滤掉被取消的发药单
List<MedicationDispense> cancelDispenses = medSummaryCancelMap.get(summaryNo); List<MedicationDispense> cancelDispenses = medSummaryCancelMap.get(summaryNo);
// 创建被取消的发药单ID集合便于快速查找 // 创建被取消的发药单ID集合便于快速查找
Set<Long> cancelIds = Set<Long> cancelIds
cancelDispenses.stream().map(MedicationDispense::getId).collect(Collectors.toSet()); = cancelDispenses.stream().map(MedicationDispense::getId).collect(Collectors.toSet());
// 过滤出未被取消的发药单 // 过滤出未被取消的发药单
List<MedicationDispense> remainingDispenses = allDispenses.stream() List<MedicationDispense> remainingDispenses = allDispenses.stream()
.filter(dispense -> !cancelIds.contains(dispense.getId())).collect(Collectors.toList()); .filter(dispense -> !cancelIds.contains(dispense.getId())).collect(Collectors.toList());
@@ -583,11 +567,10 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 汇总单据号 // 汇总单据号
String busNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICINE_SUMMARY_NO.getPrefix(), 4); String busNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICINE_SUMMARY_NO.getPrefix(), 4);
// 根据相同批号的同一药品进行汇总 // 根据相同批号的同一药品进行汇总
Map<String, List<MedicationDispense>> medicationSummaryInfoMap = Map<String, List<MedicationDispense>> medicationSummaryInfoMap
medicationDispenses.stream().collect(Collectors = medicationDispenses.stream().collect(Collectors
.groupingBy(x -> x.getMedicationId() + CommonConstants.Common.DASH + x.getLotNumber())); .groupingBy(x -> x.getMedicationId() + CommonConstants.Common.DASH + x.getLotNumber()));
for (Map.Entry<String, for (Map.Entry<String, List<MedicationDispense>> medicationSummaryInfoList : medicationSummaryInfoMap.entrySet()) {
List<MedicationDispense>> medicationSummaryInfoList : medicationSummaryInfoMap.entrySet()) {
List<MedicationDispense> medicationSummaryList = medicationSummaryInfoList.getValue(); List<MedicationDispense> medicationSummaryList = medicationSummaryInfoList.getValue();
MedicationDispense medicationDispense = medicationSummaryList.get(0); MedicationDispense medicationDispense = medicationSummaryList.get(0);
Long medicationId = medicationDispense.getMedicationId(); Long medicationId = medicationDispense.getMedicationId();
@@ -601,8 +584,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 单位 // 单位
String unitCode = null; String unitCode = null;
// 根据药品id获取对应的药品信息 // 根据药品id获取对应的药品信息
Optional<MedicationDefinition> medicationDefinition = Optional<MedicationDefinition> medicationDefinition
medicationDefinitions.stream().filter(x -> x.getId().equals(medicationId)).findFirst(); = medicationDefinitions.stream().filter(x -> x.getId().equals(medicationId)).findFirst();
if (medicationDefinition.isPresent()) { if (medicationDefinition.isPresent()) {
partPercent = medicationDefinition.get().getPartPercent(); partPercent = medicationDefinition.get().getPartPercent();
minUnitCode = medicationDefinition.get().getMinUnitCode(); minUnitCode = medicationDefinition.get().getMinUnitCode();
@@ -641,8 +624,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 处理临时未发放的药品 // 处理临时未发放的药品
if (!tempMedUndispenseList.isEmpty()) { if (!tempMedUndispenseList.isEmpty()) {
// 排除已汇总的药品 // 排除已汇总的药品
List<MedicationDispense> medicationDispenseList = List<MedicationDispense> medicationDispenseList
tempMedUndispenseList.stream().filter(x -> x.getSummaryNo() == null).toList(); = tempMedUndispenseList.stream().filter(x -> x.getSummaryNo() == null).toList();
// 更新状态为草稿 // 更新状态为草稿
medicationDispenseService.updateDispenseStatus( medicationDispenseService.updateDispenseStatus(
medicationDispenseList.stream().map(MedicationDispense::getId).toList(), medicationDispenseList.stream().map(MedicationDispense::getId).toList(),
@@ -651,8 +634,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 处理长期未发的药品 // 处理长期未发的药品
if (!longMedUndispenseList.isEmpty()) { if (!longMedUndispenseList.isEmpty()) {
// 排除已汇总的药品 // 排除已汇总的药品
List<MedicationDispense> medicationDispenseList = List<MedicationDispense> medicationDispenseList
tempMedUndispenseList.stream().filter(x -> x.getSummaryNo() == null).toList(); = tempMedUndispenseList.stream().filter(x -> x.getSummaryNo() == null).toList();
medicationDispenseService medicationDispenseService
.removeByIds(medicationDispenseList.stream().map(MedicationDispense::getId).toList()); .removeByIds(medicationDispenseList.stream().map(MedicationDispense::getId).toList());
} }
@@ -674,17 +657,16 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
*/ */
@Override @Override
public R<?> adviceVoid(AdviceExecuteParam adviceExecuteParam) { public R<?> adviceVoid(AdviceExecuteParam adviceExecuteParam) {
<<<<<<< HEAD
=======
// 获取当前不执行时间 // 获取当前不执行时间
Date notExeDate = DateUtils.getNowDate(); Date notExeDate = DateUtils.getNowDate();
>>>>>>> v1.3
List<AdviceExecuteDetailParam> adviceExecuteDetailList = adviceExecuteParam.getAdviceExecuteDetailList(); List<AdviceExecuteDetailParam> adviceExecuteDetailList = adviceExecuteParam.getAdviceExecuteDetailList();
// 判断是否有空的pID // 判断是否有空的pID
for (AdviceExecuteDetailParam adviceExecuteDetailParam : adviceExecuteDetailList) for (AdviceExecuteDetailParam adviceExecuteDetailParam : adviceExecuteDetailList) {
if (adviceExecuteDetailParam.getProcedureId() != null) if (adviceExecuteDetailParam.getProcedureId() != null) {
return R.fail("执行失败"); return R.fail("执行失败");
}
}
for (AdviceExecuteDetailParam adviceExecuteDetailParam : adviceExecuteDetailList) { for (AdviceExecuteDetailParam adviceExecuteDetailParam : adviceExecuteDetailList) {
for (String executeTime : adviceExecuteDetailParam.getExecuteTimes()) { for (String executeTime : adviceExecuteDetailParam.getExecuteTimes()) {
@@ -698,11 +680,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
procedureService.addProcedureRecord(adviceExecuteDetailParam.getEncounterId(), procedureService.addProcedureRecord(adviceExecuteDetailParam.getEncounterId(),
adviceExecuteDetailParam.getPatientId(), adviceExecuteDetailParam.getRequestId(), adviceExecuteDetailParam.getPatientId(), adviceExecuteDetailParam.getRequestId(),
adviceExecuteDetailParam.getAdviceTable(), EventStatus.STOPPED, ProcedureCategory.INPATIENT_ADVICE, adviceExecuteDetailParam.getAdviceTable(), EventStatus.STOPPED, ProcedureCategory.INPATIENT_ADVICE,
<<<<<<< HEAD
null, exeDate, adviceExecuteDetailParam.getGroupId(), null);
=======
null, exeDate, notExeDate, adviceExecuteDetailParam.getGroupId(), null); null, exeDate, notExeDate, adviceExecuteDetailParam.getGroupId(), null);
>>>>>>> v1.3
} }
} }
return R.ok("不执行成功"); return R.ok("不执行成功");
@@ -722,15 +700,11 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
List<MedicationRequestUseExe> tempMedication = medUseExeList.stream() List<MedicationRequestUseExe> tempMedication = medUseExeList.stream()
.filter(e -> TherapyTimeType.TEMPORARY.getValue().equals(e.getTherapyEnum())).toList(); .filter(e -> TherapyTimeType.TEMPORARY.getValue().equals(e.getTherapyEnum())).toList();
// 药品定义id集合 // 药品定义id集合
List<Long> medicationDefinitionIdList = List<Long> medicationDefinitionIdList
medUseExeList.stream().map(MedicationRequestUseExe::getMedicationId).collect(Collectors.toList()); = medUseExeList.stream().map(MedicationRequestUseExe::getMedicationId).collect(Collectors.toList());
// 医嘱详细信息 // 医嘱详细信息
List<AdviceBaseDto> medicationInfos = doctorStationAdviceAppService.getAdviceBaseInfo(null, null, null, List<AdviceBaseDto> medicationInfos = doctorStationAdviceAppService.getAdviceBaseInfo(null, null, null,
<<<<<<< HEAD
medicationDefinitionIdList, 0L, 1, 500, Whether.NO.getValue(), List.of(1)).getRecords();
=======
medicationDefinitionIdList, 0L, 1, 500, Whether.NO.getValue(), List.of(1), null).getRecords(); medicationDefinitionIdList, 0L, 1, 500, Whether.NO.getValue(), List.of(1), null).getRecords();
>>>>>>> v1.3
// 当前时间 // 当前时间
Date curDate = new Date(); Date curDate = new Date();
@@ -747,49 +721,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
longMedicationRequest = new MedicationRequest(); longMedicationRequest = new MedicationRequest();
BeanUtils.copyProperties(medicationRequestUseExe, longMedicationRequest); BeanUtils.copyProperties(medicationRequestUseExe, longMedicationRequest);
<<<<<<< HEAD
// 生成执行记录
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 转换为 LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse(executeTime, formatter);
// 转换为 Date
Date exeDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
// 执行记录id
Long procedureId = procedureService.addProcedureRecord(longMedicationRequest.getEncounterId(),
longMedicationRequest.getPatientId(), longMedicationRequest.getId(),
CommonConstants.TableName.MED_MEDICATION_REQUEST, EventStatus.COMPLETED,
ProcedureCategory.INPATIENT_ADVICE, null, exeDate, longMedicationRequest.getGroupId(), null);
// 生成药品发放
Long dispenseId =
medicationDispenseService.generateMedicationDispense(longMedicationRequest, procedureId, exeDate);
// 生成账单
chargeItem = new ChargeItem();
chargeItem.setStatusEnum(ChargeItemStatus.BILLABLE.getValue()); // 收费状态
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(longMedicationRequest.getBusNo()));
chargeItem.setGenerateSourceEnum(GenerateSource.ORDER_EXECUTE.getValue()); // 生成来源
chargeItem.setPrescriptionNo(longMedicationRequest.getPrescriptionNo()); // 处方号
chargeItem.setPatientId(longMedicationRequest.getPatientId()); // 患者
chargeItem.setContextEnum(ChargeItemContext.MEDICATION.getValue()); // 类型
chargeItem.setEncounterId(longMedicationRequest.getEncounterId()); // 就诊id
chargeItem.setEntererId(practitionerId);// 开立人ID
chargeItem.setRequestingOrgId(orgId); // 开立科室
chargeItem.setEnteredDate(curDate); // 开立时间
chargeItem.setServiceTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);// 医疗服务类型
chargeItem.setServiceId(longMedicationRequest.getId()); // 医疗服务ID
chargeItem.setProductTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION);// 产品所在表
chargeItem.setProductId(longMedicationRequest.getMedicationId());// 收费项id
chargeItem.setAccountId(medicationRequestUseExe.getAccountId());// 关联账户ID
chargeItem.setConditionId(longMedicationRequest.getConditionId()); // 诊断id
chargeItem.setEncounterDiagnosisId(longMedicationRequest.getEncounterDiagnosisId()); // 就诊诊断id
chargeItem.setProcedureId(procedureId); // 执行id
chargeItem.setDispenseTable(CommonConstants.TableName.MED_MEDICATION_DISPENSE); // 发放表名
// chargeItem.setDispenseId(dispenseId); // 发放ID
// ------------------------------ 匹配定价信息
=======
>>>>>>> v1.3
// 根据 medicationId 查找对应的医嘱信息 // 根据 medicationId 查找对应的医嘱信息
MedicationRequest finalLongMedicationRequest = longMedicationRequest; MedicationRequest finalLongMedicationRequest = longMedicationRequest;
Optional<AdviceBaseDto> matchedAdvice = medicationInfos.stream() Optional<AdviceBaseDto> matchedAdvice = medicationInfos.stream()
@@ -807,32 +738,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 小单位 // 小单位
String minUnitCode = advice.getMinUnitCode(); String minUnitCode = advice.getMinUnitCode();
<<<<<<< HEAD
// 在 priceList 中查找匹配的定价信息
Optional<AdvicePriceDto> matchedPrice = advice.getPriceList().stream()
.filter(price -> finalLongMedicationRequest.getLotNumber().equals(price.getConditionValue()))
.findFirst();
if (matchedPrice.isEmpty()) {
throw new RuntimeException("未找到匹配的定价信息lotNumber: " + finalLongMedicationRequest.getLotNumber());
}
AdvicePriceDto priceDto = matchedPrice.get();
// 计算价格
BigDecimal price;
if (finalLongMedicationRequest.getUnitCode().equals(priceDto.getUnitCode())) {
// (大单位)unitCode 匹配,直接取 price
price = priceDto.getPrice();
} else {
// (小单位)unitCode 不匹配,计算 price / partPercent
price = priceDto.getPrice().divide(partPercent, 6, RoundingMode.HALF_UP);
}
chargeItem.setDefinitionId(priceDto.getDefinitionId()); // 费用定价ID
chargeItem.setDefDetailId(priceDto.getDefinitionDetailId()); // 定价子表主键
chargeItem.setQuantityValue(longMedicationRequest.getQuantity()); // 数量
chargeItem.setQuantityUnit(longMedicationRequest.getUnitCode()); // 单位
chargeItem.setUnitPrice(price); // 单价
chargeItem.setTotalPrice(
longMedicationRequest.getQuantity().multiply(price).setScale(6, RoundingMode.HALF_UP)); // 总价
=======
// 生成执行记录 // 生成执行记录
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 转换为 LocalDateTime // 转换为 LocalDateTime
@@ -907,7 +812,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
} else { } else {
// 批次售卖情况 // 批次售卖情况
throw new RuntimeException("[住院]批次售卖的情况暂未处理"); throw new RuntimeException("[住院]批次售卖的情况暂未处理");
>>>>>>> v1.3
/* // 需要的药品数量(小单位) /* // 需要的药品数量(小单位)
BigDecimal minUnitQuantity = medicationRequestUseExe.getMinUnitQuantity(); BigDecimal minUnitQuantity = medicationRequestUseExe.getMinUnitQuantity();
@@ -1073,15 +977,11 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
List<ServiceRequestUseExe> tempActivity = actUseExeList.stream() List<ServiceRequestUseExe> tempActivity = actUseExeList.stream()
.filter(e -> TherapyTimeType.TEMPORARY.getValue().equals(e.getTherapyEnum())).toList(); .filter(e -> TherapyTimeType.TEMPORARY.getValue().equals(e.getTherapyEnum())).toList();
// 诊疗定义id集合 // 诊疗定义id集合
List<Long> activityDefinitionIdList = List<Long> activityDefinitionIdList
actUseExeList.stream().map(ServiceRequestUseExe::getActivityId).collect(Collectors.toList()); = actUseExeList.stream().map(ServiceRequestUseExe::getActivityId).collect(Collectors.toList());
// 医嘱详细信息 // 医嘱详细信息
List<AdviceBaseDto> activityInfos = doctorStationAdviceAppService.getAdviceBaseInfo(null, null, null, List<AdviceBaseDto> activityInfos = doctorStationAdviceAppService.getAdviceBaseInfo(null, null, null,
<<<<<<< HEAD
activityDefinitionIdList, 0L, 1, 500, Whether.NO.getValue(), List.of(3)).getRecords();
=======
activityDefinitionIdList, 0L, 1, 500, Whether.NO.getValue(), List.of(3), null).getRecords(); activityDefinitionIdList, 0L, 1, 500, Whether.NO.getValue(), List.of(3), null).getRecords();
>>>>>>> v1.3
// 当前时间 // 当前时间
Date curDate = new Date(); Date curDate = new Date();
@@ -1158,11 +1058,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
.setTotalPrice(longServiceRequest.getQuantity().multiply(price).setScale(6, RoundingMode.HALF_UP)); // 总价 .setTotalPrice(longServiceRequest.getQuantity().multiply(price).setScale(6, RoundingMode.HALF_UP)); // 总价
chargeItemService.saveOrUpdate(chargeItem); chargeItemService.saveOrUpdate(chargeItem);
<<<<<<< HEAD
// 处理诊疗绑定耗材
this.handleBindDevice(longServiceRequest, procedureId, takeDeviceLocationId, curDate, practitionerId,
orgId, serviceRequestUseExe.getAccountId(), exeDate, clickDate);
=======
// 医嘱定价来源 // 医嘱定价来源
String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE); String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE);
if (OrderPricingSource.RETAIL_PRICE.getCode().equals(orderPricingSource)) { if (OrderPricingSource.RETAIL_PRICE.getCode().equals(orderPricingSource)) {
@@ -1170,7 +1065,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
this.handleBindDevice(longServiceRequest, procedureId, takeDeviceLocationId, curDate, this.handleBindDevice(longServiceRequest, procedureId, takeDeviceLocationId, curDate,
practitionerId, orgId, serviceRequestUseExe.getAccountId(), expectedDate, clickDate); practitionerId, orgId, serviceRequestUseExe.getAccountId(), expectedDate, clickDate);
} }
>>>>>>> v1.3
} }
} }
@@ -1202,11 +1096,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
.set(ChargeItem::getProcedureId, procedureId) .set(ChargeItem::getProcedureId, procedureId)
.set(ChargeItem::getStatusEnum, ChargeItemStatus.BILLABLE.getValue())); .set(ChargeItem::getStatusEnum, ChargeItemStatus.BILLABLE.getValue()));
<<<<<<< HEAD
// 处理诊疗绑定耗材
this.handleBindDevice(tempServiceRequest, procedureId, takeDeviceLocationId, curDate, practitionerId,
orgId, serviceRequestUseExe.getAccountId(), exeDate, clickDate);
=======
// 医嘱定价来源 // 医嘱定价来源
String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE); String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE);
if (OrderPricingSource.RETAIL_PRICE.getCode().equals(orderPricingSource)) { if (OrderPricingSource.RETAIL_PRICE.getCode().equals(orderPricingSource)) {
@@ -1214,7 +1103,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
this.handleBindDevice(tempServiceRequest, procedureId, takeDeviceLocationId, curDate, this.handleBindDevice(tempServiceRequest, procedureId, takeDeviceLocationId, curDate,
practitionerId, orgId, serviceRequestUseExe.getAccountId(), expectedDate, clickDate); practitionerId, orgId, serviceRequestUseExe.getAccountId(), expectedDate, clickDate);
} }
>>>>>>> v1.3
} }
} }
@@ -1236,8 +1124,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
private void handleBindDevice(ServiceRequest serviceRequest, Long procedureId, Long locationId, Date curDate, private void handleBindDevice(ServiceRequest serviceRequest, Long procedureId, Long locationId, Date curDate,
Long practitionerId, Long orgId, Long accountId, Date exeDate, Date clickDate) { Long practitionerId, Long orgId, Long accountId, Date exeDate, Date clickDate) {
// 查询诊疗绑定耗材的信息 // 查询诊疗绑定耗材的信息
List<ActivityBindDeviceDetailDto> activityBindDevice = List<ActivityBindDeviceDetailDto> activityBindDevice
doctorStationAdviceAppMapper.getActivityBindDevice(serviceRequest.getActivityId() + "", = doctorStationAdviceAppMapper.getActivityBindDevice(serviceRequest.getActivityId() + "",
PublicationStatus.ACTIVE.getValue(), CommonConstants.TableName.ADM_DEVICE_DEFINITION); PublicationStatus.ACTIVE.getValue(), CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 满足此条件,说明诊疗绑了耗材 // 满足此条件,说明诊疗绑了耗材
if (!activityBindDevice.isEmpty()) { if (!activityBindDevice.isEmpty()) {
@@ -1245,8 +1133,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
throw new RuntimeException("" + serviceRequest.getBusNo() + "】诊疗请求,绑定的耗材未配置发放耗材房"); throw new RuntimeException("" + serviceRequest.getBusNo() + "】诊疗请求,绑定的耗材未配置发放耗材房");
} }
// 耗材定义id集合 // 耗材定义id集合
List<Long> deviceIds = List<Long> deviceIds
activityBindDevice.stream().map(ActivityBindDeviceDetailDto::getDeviceId).collect(Collectors.toList()); = activityBindDevice.stream().map(ActivityBindDeviceDetailDto::getDeviceId).collect(Collectors.toList());
// 耗材库存集合 // 耗材库存集合
List<AdviceInventoryDto> adviceInventoryList = doctorStationAdviceAppMapper.getAdviceInventory(locationId, List<AdviceInventoryDto> adviceInventoryList = doctorStationAdviceAppMapper.getAdviceInventory(locationId,
deviceIds, CommonConstants.SqlCondition.ABOUT_INVENTORY_TABLE_STR, PublicationStatus.ACTIVE.getValue()); deviceIds, CommonConstants.SqlCondition.ABOUT_INVENTORY_TABLE_STR, PublicationStatus.ACTIVE.getValue());
@@ -1255,16 +1143,12 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
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<AdviceBaseDto> deviceInfos = doctorStationAdviceAppService List<AdviceBaseDto> deviceInfos = doctorStationAdviceAppService
<<<<<<< HEAD
.getAdviceBaseInfo(null, null, null, deviceIds, 0L, 1, 500, Whether.NO.getValue(), List.of(2))
=======
.getAdviceBaseInfo(null, null, null, deviceIds, 0L, 1, 500, Whether.NO.getValue(), List.of(2), null) .getAdviceBaseInfo(null, null, null, deviceIds, 0L, 1, 500, Whether.NO.getValue(), List.of(2), null)
>>>>>>> v1.3
.getRecords(); .getRecords();
DeviceRequest deviceRequest; DeviceRequest deviceRequest;
@@ -1293,14 +1177,10 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
if (deviceAdvice.isEmpty()) { if (deviceAdvice.isEmpty()) {
throw new RuntimeException("未找到对应的医嘱信息deviceId: " + activityBindDeviceDetailDto.getDeviceId()); throw new RuntimeException("未找到对应的医嘱信息deviceId: " + activityBindDeviceDetailDto.getDeviceId());
} }
<<<<<<< HEAD
AdviceBaseDto advice = deviceAdvice.get();
=======
// 医嘱信息 // 医嘱信息
AdviceBaseDto advice = deviceAdvice.get(); AdviceBaseDto advice = deviceAdvice.get();
// 拆零比 // 拆零比
BigDecimal partPercent = advice.getPartPercent(); BigDecimal partPercent = advice.getPartPercent();
>>>>>>> v1.3
// 生成耗材请求 // 生成耗材请求
deviceRequest = new DeviceRequest(); deviceRequest = new DeviceRequest();
@@ -1328,77 +1208,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 需要的耗材数量(小单位) // 需要的耗材数量(小单位)
minUnitCodeQuantity = activityBindDeviceDetailDto.getMinUnitCodeQuantity(); minUnitCodeQuantity = activityBindDeviceDetailDto.getMinUnitCodeQuantity();
// 单位(小单位) // 单位(小单位)
<<<<<<< HEAD
// String minUnitCode = activityBindDeviceDetailDto.getMinUnitCode();
// 库存集合
List<AdviceInventoryDto> inventoryList = advice.getInventoryList();
// 价格集合
List<AdvicePriceDto> priceList = advice.getPriceList();
// 剩余需要分配的数量
BigDecimal remainingQuantity = minUnitCodeQuantity;
// 按批次循环分配数量
for (AdviceInventoryDto inventory : inventoryList) {
if (remainingQuantity.compareTo(BigDecimal.ZERO) <= 0) {
break;
}
// 可用量
BigDecimal availableQuantity = inventory.getQuantity();
// 实际供应量
BigDecimal actualQuantity;
if (availableQuantity.compareTo(remainingQuantity) >= 0) {
// 当前批次足够满足剩余需求
actualQuantity = remainingQuantity;
remainingQuantity = BigDecimal.ZERO;
} else {
// 当前批次全部用完
actualQuantity = availableQuantity;
remainingQuantity = remainingQuantity.subtract(availableQuantity);
}
// 批次号
String lotNumber = inventory.getLotNumber();
// 查找对应批次的价格
AdvicePriceDto priceInfos = findPriceByLotNumber(inventory.getLotNumber(), priceList);
// 根据批次库存量,生成耗材发放
deviceRequest.setQuantity(actualQuantity);
deviceRequest.setLotNumber(lotNumber);
// 发放ID
Long dispenseId =
deviceDispenseService.generateDeviceDispense(deviceRequest, procedureId, locationId, exeDate);
// 根据批次库存量,生成账单
chargeItem = new ChargeItem();
chargeItem.setStatusEnum(ChargeItemStatus.BILLABLE.getValue()); // 收费状态
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo()));
chargeItem.setGenerateSourceEnum(GenerateSource.ORDER_EXECUTE.getValue()); // 生成来源
chargeItem.setPatientId(deviceRequest.getPatientId()); // 患者
chargeItem.setContextEnum(ChargeItemContext.DEVICE.getValue()); // 类型
chargeItem.setEncounterId(deviceRequest.getEncounterId()); // 就诊id
chargeItem.setDefinitionId(priceInfos.getDefinitionId()); // 费用定价ID
chargeItem.setDefDetailId(priceInfos.getDefinitionDetailId()); // 定价子表主键
chargeItem.setEntererId(practitionerId);// 开立人ID
chargeItem.setRequestingOrgId(orgId); // 开立科室
chargeItem.setEnteredDate(curDate); // 开立时间
chargeItem.setServiceTable(CommonConstants.TableName.WOR_DEVICE_REQUEST);// 医疗服务类型
chargeItem.setServiceId(deviceRequest.getId()); // 医疗服务ID
chargeItem.setProductTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION);// 产品所在表
chargeItem.setProductId(activityBindDeviceDetailDto.getDeviceId());// 收费项id
chargeItem.setAccountId(accountId);// 关联账户ID
chargeItem.setConditionId(deviceRequest.getConditionId()); // 诊断id
chargeItem.setEncounterDiagnosisId(deviceRequest.getEncounterDiagnosisId()); // 就诊诊断id
chargeItem.setDispenseTable(CommonConstants.TableName.WOR_DEVICE_DISPENSE); // 发放表名
// chargeItem.setDispenseId(dispenseId); // 发放ID
chargeItem.setQuantityValue(actualQuantity); // 数量
chargeItem.setQuantityUnit(priceInfos.getUnitCode()); // 单位
chargeItem.setUnitPrice(priceInfos.getPrice()); // 单价
chargeItem.setTotalPrice(
actualQuantity.multiply(priceInfos.getPrice()).setScale(6, RoundingMode.HALF_UP)); // 总价
chargeItemService.save(chargeItem);
}
=======
String minUnitCode = activityBindDeviceDetailDto.getMinUnitCode(); String minUnitCode = activityBindDeviceDetailDto.getMinUnitCode();
// 价格集合 // 价格集合
List<AdvicePriceDto> priceList = advice.getPriceList(); List<AdvicePriceDto> priceList = advice.getPriceList();
@@ -1437,8 +1246,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
deviceRequest.setUnitCode(minUnitCode); deviceRequest.setUnitCode(minUnitCode);
// deviceRequest.setLotNumber(lotNumber); // deviceRequest.setLotNumber(lotNumber);
// 发放ID // 发放ID
Long dispenseId = Long dispenseId
deviceDispenseService.generateDeviceDispense(deviceRequest, procedureId, locationId, exeDate); = deviceDispenseService.generateDeviceDispense(deviceRequest, procedureId, locationId, exeDate);
// 根据批次库存量,生成账单 // 根据批次库存量,生成账单
chargeItem = new ChargeItem(); chargeItem = new ChargeItem();
@@ -1472,7 +1281,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
chargeItemService.save(chargeItem); chargeItemService.save(chargeItem);
>>>>>>> v1.3
} }
} }
} }
@@ -1501,14 +1309,14 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
*/ */
private List<MedicationRequestUseExe> assemblyMedication(List<AdviceExecuteDetailParam> medicineList) { private List<MedicationRequestUseExe> assemblyMedication(List<AdviceExecuteDetailParam> medicineList) {
// 药品请求id集合 // 药品请求id集合
List<Long> medicineRequestIdList = List<Long> medicineRequestIdList
medicineList.stream().map(AdviceExecuteDetailParam::getRequestId).collect(Collectors.toList()); = medicineList.stream().map(AdviceExecuteDetailParam::getRequestId).collect(Collectors.toList());
// 药品请求集合 // 药品请求集合
List<MedicationRequest> medicationRequestList = medicationRequestService List<MedicationRequest> medicationRequestList = medicationRequestService
.list(new LambdaQueryWrapper<MedicationRequest>().in(MedicationRequest::getId, medicineRequestIdList)); .list(new LambdaQueryWrapper<MedicationRequest>().in(MedicationRequest::getId, medicineRequestIdList));
// 药品定义id集合 // 药品定义id集合
List<Long> medicationDefinitionIdList = List<Long> medicationDefinitionIdList
medicationRequestList.stream().map(MedicationRequest::getMedicationId).collect(Collectors.toList()); = medicationRequestList.stream().map(MedicationRequest::getMedicationId).collect(Collectors.toList());
// 药品定义集合 // 药品定义集合
List<MedicationDefinition> medicationDefinitionList = medicationDefinitionService.list( List<MedicationDefinition> medicationDefinitionList = medicationDefinitionService.list(
new LambdaQueryWrapper<MedicationDefinition>().in(MedicationDefinition::getId, medicationDefinitionIdList)); new LambdaQueryWrapper<MedicationDefinition>().in(MedicationDefinition::getId, medicationDefinitionIdList));
@@ -1524,8 +1332,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
} }
BeanUtils.copyProperties(medicationRequest, useExe); BeanUtils.copyProperties(medicationRequest, useExe);
// 匹配 executeTimes根据 medicationRequest 的 id 在 medicineList 中查找匹配的 executeTimes // 匹配 executeTimes根据 medicationRequest 的 id 在 medicineList 中查找匹配的 executeTimes
List<String> matchedExecuteTimes = List<String> matchedExecuteTimes
medicineList.stream().filter(medicine -> medicine.getRequestId().equals(medicationRequest.getId())) = medicineList.stream().filter(medicine -> medicine.getRequestId().equals(medicationRequest.getId()))
.findFirst().map(AdviceExecuteDetailParam::getExecuteTimes).orElse(null); .findFirst().map(AdviceExecuteDetailParam::getExecuteTimes).orElse(null);
useExe.setExecuteTimes(matchedExecuteTimes); useExe.setExecuteTimes(matchedExecuteTimes);
// 计算 executeTimesNumexecuteTimes 的集合大小,转换为 BigDecimal // 计算 executeTimesNumexecuteTimes 的集合大小,转换为 BigDecimal
@@ -1567,8 +1375,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
*/ */
private List<ServiceRequestUseExe> assemblyActivity(List<AdviceExecuteDetailParam> activityList) { private List<ServiceRequestUseExe> assemblyActivity(List<AdviceExecuteDetailParam> activityList) {
// 诊疗请求id集合 // 诊疗请求id集合
List<Long> activityRequestIdList = List<Long> activityRequestIdList
activityList.stream().map(AdviceExecuteDetailParam::getRequestId).collect(Collectors.toList()); = activityList.stream().map(AdviceExecuteDetailParam::getRequestId).collect(Collectors.toList());
// 诊疗请求集合 // 诊疗请求集合
List<ServiceRequest> activityRequestList = serviceRequestService List<ServiceRequest> activityRequestList = serviceRequestService
.list(new LambdaQueryWrapper<ServiceRequest>().in(ServiceRequest::getId, activityRequestIdList)); .list(new LambdaQueryWrapper<ServiceRequest>().in(ServiceRequest::getId, activityRequestIdList));
@@ -1584,8 +1392,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
} }
BeanUtils.copyProperties(serviceRequest, useExe); BeanUtils.copyProperties(serviceRequest, useExe);
// 匹配 executeTimes根据 serviceRequest 的 id 在 activityList 中查找匹配的 executeTimes // 匹配 executeTimes根据 serviceRequest 的 id 在 activityList 中查找匹配的 executeTimes
List<String> matchedExecuteTimes = List<String> matchedExecuteTimes
activityList.stream().filter(activity -> activity.getRequestId().equals(serviceRequest.getId())) = activityList.stream().filter(activity -> activity.getRequestId().equals(serviceRequest.getId()))
.findFirst().map(AdviceExecuteDetailParam::getExecuteTimes).orElse(null); .findFirst().map(AdviceExecuteDetailParam::getExecuteTimes).orElse(null);
useExe.setExecuteTimes(matchedExecuteTimes); useExe.setExecuteTimes(matchedExecuteTimes);
// 计算 executeTimesNumexecuteTimes 的集合大小,转换为 BigDecimal // 计算 executeTimesNumexecuteTimes 的集合大小,转换为 BigDecimal
@@ -1613,11 +1421,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 药品发放编码 // 药品发放编码
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4)); medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
// 退药状态 // 退药状态
<<<<<<< HEAD
medicationDispense.setStatusEnum(DispenseStatus.PREPARATION.getValue());
=======
medicationDispense.setStatusEnum(DispenseStatus.PENDING_REFUND.getValue()); medicationDispense.setStatusEnum(DispenseStatus.PENDING_REFUND.getValue());
>>>>>>> v1.3
// 状态变更时间 // 状态变更时间
medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
// 取消执行id // 取消执行id

View File

@@ -30,14 +30,8 @@ import com.openhis.web.inhospitalnursestation.dto.MedicineDispenseFormDto;
import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryFormDto; import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryFormDto;
import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryParam; import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryParam;
import com.openhis.web.inhospitalnursestation.mapper.MedicineSummaryAppMapper; import com.openhis.web.inhospitalnursestation.mapper.MedicineSummaryAppMapper;
<<<<<<< HEAD
import com.openhis.web.pharmacymanage.dto.UnDispenseInventoryDto;
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
import com.openhis.workflow.domain.InventoryItem;
=======
import com.openhis.web.pharmacymanage.dto.DispenseInitDto; import com.openhis.web.pharmacymanage.dto.DispenseInitDto;
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper; import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
>>>>>>> v1.3
import com.openhis.workflow.service.ISupplyDeliveryService; import com.openhis.workflow.service.ISupplyDeliveryService;
import com.openhis.workflow.service.ISupplyRequestService; import com.openhis.workflow.service.ISupplyRequestService;
@@ -72,59 +66,6 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
private ReturnMedicineMapper returnMedicineMapper; private ReturnMedicineMapper returnMedicineMapper;
/** /**
<<<<<<< HEAD
* 查询发药单信息
*
* @param dispenseFormSearchParam 查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求
* @return 发药单信息
*/
@Override
public R<?> getMedicineDispenseFormPage(DispenseFormSearchParam dispenseFormSearchParam, Integer pageNo,
Integer pageSize, HttpServletRequest request) {
// 初始化查询参数
String encounterIds = dispenseFormSearchParam.getEncounterIds();
dispenseFormSearchParam.setEncounterIds(null);
// 构建查询条件
QueryWrapper<DispenseFormSearchParam> queryWrapper =
HisQueryUtils.buildQueryWrapper(dispenseFormSearchParam, null, null, request);
// 手动拼接住院患者id条件
if (encounterIds != null && !encounterIds.isEmpty()) {
List<Long> encounterIdList =
Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList();
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList);
}
// 领药信息列表
Page<MedicineDispenseFormDto> medicineDispenseFormPage =
medicineSummaryAppMapper.selectMedicineDispenseFormPage(new Page<>(pageNo, pageSize), queryWrapper,
RequestStatus.COMPLETED.getValue(), EncounterActivityStatus.ACTIVE.getValue(),
LocationForm.BED.getValue(), ParticipantType.ADMITTING_DOCTOR.getCode(),
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), ChargeItemStatus.BILLABLE.getValue(),
ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDED.getValue(),
DispenseStatus.SUMMARIZED.getValue());
medicineDispenseFormPage.getRecords().forEach(e -> {
// 是否皮试
e.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getSkinTestFlag()));
// 是否为注射药物
e.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getInjectFlag()));
// 医嘱类型
e.setTherapyEnum_enumText(EnumUtils.getInfoByValue(TherapyTimeType.class, e.getTherapyEnum()));
// 性别枚举
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
// 计算年龄
if (e.getBirthDate() != null) {
e.setAge(AgeCalculatorUtil.getAge(e.getBirthDate()));
}
});
return R.ok(medicineDispenseFormPage);
}
/**
* 查询药品汇总单
=======
* 药品汇总单初始化 * 药品汇总单初始化
* *
* @return 初始化信息 * @return 初始化信息
@@ -133,8 +74,8 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
public R<?> getMedicineSummaryInit() { public R<?> getMedicineSummaryInit() {
DispenseInitDto initDto = new DispenseInitDto(); DispenseInitDto initDto = new DispenseInitDto();
// 未发药原因下拉选列表 // 未发药原因下拉选列表
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions = List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions
Stream.of(NotPerformedReasonEnum.values()) = Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(), .map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo())) notPerformedReason.getInfo()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -151,42 +92,10 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
/** /**
* 查询发药单信息 * 查询发药单信息
>>>>>>> v1.3
* *
* @param dispenseFormSearchParam 查询条件 * @param dispenseFormSearchParam 查询条件
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
<<<<<<< HEAD
* @param searchKey 模糊查询关键字
* @param request 请求
* @return 药品汇总单
*/
@Override
public R<?> getMedicineSummaryFormPage(DispenseFormSearchParam dispenseFormSearchParam, Integer pageNo,
Integer pageSize, String searchKey, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<DispenseFormSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(dispenseFormSearchParam,
searchKey, new HashSet<>(List.of(CommonConstants.FieldName.BusNo)), request);
// 汇总单分页列表
Page<MedicineSummaryFormDto> medicineSummaryFormPage = medicineSummaryAppMapper.selectMedicineSummaryFormPage(
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
DispenseStatus.IN_PROGRESS.getValue(), SupplyType.SUMMARY_DISPENSE.getValue());
medicineSummaryFormPage.getRecords().forEach(e -> {
// 发药状态
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(DispenseStatus.class, e.getStatusEnum()));
});
return R.ok(medicineSummaryFormPage);
}
/**
* 查询药品汇总单详情
*
* @param summaryNo 汇总单号
* @return 药品汇总单详情
*/
@Override
=======
* @param request 请求 * @param request 请求
* @return 发药单信息 * @return 发药单信息
*/ */
@@ -197,18 +106,18 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
String encounterIds = dispenseFormSearchParam.getEncounterIds(); String encounterIds = dispenseFormSearchParam.getEncounterIds();
dispenseFormSearchParam.setEncounterIds(null); dispenseFormSearchParam.setEncounterIds(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<DispenseFormSearchParam> queryWrapper = QueryWrapper<DispenseFormSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(dispenseFormSearchParam, null, null, request); = HisQueryUtils.buildQueryWrapper(dispenseFormSearchParam, null, null, request);
// 手动拼接住院患者id条件 // 手动拼接住院患者id条件
if (encounterIds != null && !encounterIds.isEmpty()) { if (encounterIds != null && !encounterIds.isEmpty()) {
List<Long> encounterIdList = List<Long> encounterIdList
Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList(); = Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList();
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList); queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList);
} }
// 领药信息列表 // 领药信息列表
Page<MedicineDispenseFormDto> medicineDispenseFormPage = Page<MedicineDispenseFormDto> medicineDispenseFormPage
medicineSummaryAppMapper.selectMedicineDispenseFormPage(new Page<>(pageNo, pageSize), queryWrapper, = medicineSummaryAppMapper.selectMedicineDispenseFormPage(new Page<>(pageNo, pageSize), queryWrapper,
RequestStatus.COMPLETED.getValue(), EncounterActivityStatus.ACTIVE.getValue(), RequestStatus.COMPLETED.getValue(), EncounterActivityStatus.ACTIVE.getValue(),
LocationForm.BED.getValue(), ParticipantType.ADMITTING_DOCTOR.getCode(), LocationForm.BED.getValue(), ParticipantType.ADMITTING_DOCTOR.getCode(),
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), ChargeItemStatus.BILLABLE.getValue(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(), ChargeItemStatus.BILLABLE.getValue(),
@@ -266,7 +175,6 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
* @return 药品汇总单详情 * @return 药品汇总单详情
*/ */
@Override @Override
>>>>>>> v1.3
public R<?> getMedicineSummaryFormDetail(String summaryNo) { public R<?> getMedicineSummaryFormDetail(String summaryNo) {
// 药品汇总单详情 // 药品汇总单详情
return R.ok(medicineSummaryAppMapper.selectMedicineSummaryFormDetail(summaryNo)); return R.ok(medicineSummaryAppMapper.selectMedicineSummaryFormDetail(summaryNo));
@@ -287,8 +195,8 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
// 申请人 // 申请人
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId(); Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
// 药品发放id // 药品发放id
List<Long> medDispenseIdList = List<Long> medDispenseIdList
medicineSummaryParamList.stream().map(MedicineSummaryParam::getDispenseId).toList(); = medicineSummaryParamList.stream().map(MedicineSummaryParam::getDispenseId).toList();
// 药品发放信息列表 // 药品发放信息列表
List<MedicationDispense> medicationDispenseList = medicationDispenseService.listByIds(medDispenseIdList); List<MedicationDispense> medicationDispenseList = medicationDispenseService.listByIds(medDispenseIdList);
if (medicationDispenseList == null || medicationDispenseList.isEmpty()) { if (medicationDispenseList == null || medicationDispenseList.isEmpty()) {
@@ -302,8 +210,8 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
List<MedicationDefinition> medicationDefinitions = medicationDefinitionService List<MedicationDefinition> medicationDefinitions = medicationDefinitionService
.listByIds(medicationDispenseList.stream().map(MedicationDispense::getMedicationId).toList()); .listByIds(medicationDispenseList.stream().map(MedicationDispense::getMedicationId).toList());
// 根据发放药房分组 // 根据发放药房分组
Map<Long, List<MedicationDispense>> medicationLocationMap = Map<Long, List<MedicationDispense>> medicationLocationMap
medicationDispenseList.stream().collect(Collectors.groupingBy(MedicationDispense::getLocationId)); = medicationDispenseList.stream().collect(Collectors.groupingBy(MedicationDispense::getLocationId));
// 循环每个药房 // 循环每个药房
for (Map.Entry<Long, List<MedicationDispense>> entry : medicationLocationMap.entrySet()) { for (Map.Entry<Long, List<MedicationDispense>> entry : medicationLocationMap.entrySet()) {
// 汇总单据号 // 汇总单据号
@@ -328,8 +236,8 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
// 单位 // 单位
String unitCode = null; String unitCode = null;
// 根据药品id获取对应的药品信息 // 根据药品id获取对应的药品信息
Optional<MedicationDefinition> medicationDefinition = Optional<MedicationDefinition> medicationDefinition
medicationDefinitions.stream().filter(x -> x.getId().equals(medicationId)).findFirst(); = medicationDefinitions.stream().filter(x -> x.getId().equals(medicationId)).findFirst();
if (medicationDefinition.isPresent()) { if (medicationDefinition.isPresent()) {
partPercent = medicationDefinition.get().getPartPercent(); partPercent = medicationDefinition.get().getPartPercent();
minUnitCode = medicationDefinition.get().getMinUnitCode(); minUnitCode = medicationDefinition.get().getMinUnitCode();
@@ -367,56 +275,6 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
* @return 处理结果 * @return 处理结果
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> checkInventoryItem(List<Long> devDispenseId, List<Long> medDispenseId) {
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(devDispenseId, medDispenseId,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit().equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
}
inventoryItemList.add(inventoryItem);
}
}
=======
public R<?> cancelSummary(String summaryNo) { public R<?> cancelSummary(String summaryNo) {
// 取消汇总申请(软删除) // 取消汇总申请(软删除)
List<Long> requestIdList = supplyRequestService.cancelSummarySupplyRequest(List.of(summaryNo)); List<Long> requestIdList = supplyRequestService.cancelSummarySupplyRequest(List.of(summaryNo));
@@ -429,7 +287,6 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
boolean result = medicationDispenseService.cancelMedicationSummary(List.of(summaryNo)); boolean result = medicationDispenseService.cancelMedicationSummary(List.of(summaryNo));
if (!result) { if (!result) {
return R.fail("取消汇总申请失败"); return R.fail("取消汇总申请失败");
>>>>>>> v1.3
} }
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"取消"})); return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"取消"}));
} }

View File

@@ -1,37 +1,5 @@
package com.openhis.web.inhospitalnursestation.appservice.impl; package com.openhis.web.inhospitalnursestation.appservice.impl;
<<<<<<< HEAD
import com.core.common.core.domain.R;
import com.core.common.core.domain.model.LoginUser;
import com.core.common.exception.ServiceException;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.SecurityUtils;
import com.openhis.administration.domain.ChargeItem;
import com.openhis.administration.service.IChargeItemService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.enums.*;
import com.openhis.web.doctorstation.dto.AdviceSaveDto;
import com.openhis.web.doctorstation.utils.AdviceUtils;
import com.openhis.web.inhospitalnursestation.appservice.INurseBillingAppService;
import com.openhis.web.regdoctorstation.dto.RegAdviceSaveDto;
import com.openhis.web.regdoctorstation.dto.RegAdviceSaveParam;
import com.openhis.workflow.domain.DeviceRequest;
import com.openhis.workflow.service.IDeviceDispenseService;
import com.openhis.workflow.service.IDeviceRequestService;
import com.openhis.workflow.service.IServiceRequestService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 住院护士站划价服务实现类
* 核心功能:临时耗材/诊疗活动划价签发、关联费用项管理、库存校验、医嘱删除(已收费校验)等
=======
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@@ -83,56 +51,13 @@ import com.openhis.workflow.service.IDeviceRequestService;
import com.openhis.workflow.service.IServiceRequestService; import com.openhis.workflow.service.IServiceRequestService;
/** /**
* 住院护士站划价服务实现类 核心职责: 1. 临时耗材划价签发(含耗材请求生成、发放记录创建、费用项关联) 2. 诊疗活动划价签发(含服务请求生成、子项处理、费用项关联) 3. 划价参数校验(非空校验、库房校验等) 4. * 住院护士站划价服务实现类 核心职责: 1. 临时耗材划价签发(含耗材请求生成、发放记录创建、费用项关联) 2.
* 已收费项目删除限制(避免误删已结算数据) 5. 关联数据一致性管理(请求表、执行表、费用表、发放表联动) * 诊疗活动划价签发(含服务请求生成、子项处理、费用项关联) 3. 划价参数校验(非空校验、库房校验等) 4. 已收费项目删除限制(避免误删已结算数据) 5.
>>>>>>> v1.3 * 关联数据一致性管理(请求表、执行表、费用表、发放表联动)
*/ */
@Service @Service
public class NurseBillingAppService implements INurseBillingAppService { public class NurseBillingAppService implements INurseBillingAppService {
<<<<<<< HEAD
// 依赖注入:保留@Resource注解按原有方式注入依赖
@Resource
private AdviceUtils adviceUtils;
@Resource
private AssignSeqUtil assignSeqUtil;
@Resource
private IDeviceRequestService iDeviceRequestService;
@Resource
private IServiceRequestService iServiceRequestService;
@Resource
private IChargeItemService iChargeItemService;
@Resource
private IDeviceDispenseService iDeviceDispenseService;
// 常量提取:避免魔法值,提高代码可维护性和可读性
/** 耗材请求服务表名(关联费用项使用) */
private static final String SERVICE_TABLE_DEVICE_REQUEST = CommonConstants.TableName.WOR_DEVICE_REQUEST;
private static final String SERVICE_TABLE_SERVICE_REQUEST = CommonConstants.TableName.WOR_SERVICE_REQUEST;
/** 费用项业务编号前缀 */
private static final String CHARGE_ITEM_BUS_NO_PREFIX = AssignSeqEnum.CHARGE_ITEM_NO.getPrefix();
/** 耗材申请单号序列号长度(按日生成) */
private static final int DEVICE_RES_NO_SEQ_LENGTH = 4;
/** 医嘱签发编码序列号长度 */
private static final int ADVICE_SIGN_SEQ_LENGTH = 10;
/**
* 新增住院护士站划价
* 完整流程:参数初始化 → 入参校验 → 医嘱分类(耗材/诊疗活动)→ 生成签发编码 → 处理耗材划价 → 处理诊疗活动划价
*
* @param regAdviceSaveParam 划价请求参数含患者信息、医嘱列表、科室ID等核心数据
* @return R<?> 划价结果响应(成功/失败信息、状态码)
*/
@Override
@Transactional(rollbackFor = Exception.class) // 事务管理:划价相关操作原子性,任一环节失败整体回滚
public R<?> addInNurseBilling(RegAdviceSaveParam regAdviceSaveParam) {
// 1. 时间参数初始化:默认使用当前时间,支持入参指定
Date curDate = new Date();
Date startTime = regAdviceSaveParam.getStartTime() == null ? curDate : regAdviceSaveParam.getStartTime();
Date authoredTime = regAdviceSaveParam.getAuthoredTime() == null ? curDate : regAdviceSaveParam.getAuthoredTime();
// 2. 入参校验:非空校验 + 库存校验,校验失败直接返回错误响应
=======
// ======================== 常量定义(关联表名/编码规则)======================== // ======================== 常量定义(关联表名/编码规则)========================
/** /**
* 耗材请求服务关联表名(用于费用项关联数据源) * 耗材请求服务关联表名(用于费用项关联数据源)
@@ -215,11 +140,12 @@ public class NurseBillingAppService implements INurseBillingAppService {
private IOrganizationService organizationService; private IOrganizationService organizationService;
// ======================== 核心业务方法(划价新增)======================== // ======================== 核心业务方法(划价新增)========================
/** /**
* 新增住院护士站划价(核心入口方法) 完整流程:参数初始化 → 入参校验 → 医嘱分类 → 生成全局签发编码 → 分类处理划价 → 返回结果 事务特性:所有操作原子化,任一环节失败则整体回滚(避免数据不一致) * 新增住院护士站划价(核心入口方法) 完整流程:参数初始化 → 入参校验 → 医嘱分类 → 生成全局签发编码 → 分类处理划价 → 返回结果
* 事务特性:所有操作原子化,任一环节失败则整体回滚(避免数据不一致)
* *
* @param regAdviceSaveParam 划价请求参数体 包含患者ID、就诊ID、住院科室ID、医嘱列表耗材/诊疗活动)、操作时间等核心数据 * @param regAdviceSaveParam 划价请求参数体
* 包含患者ID、就诊ID、住院科室ID、医嘱列表耗材/诊疗活动)、操作时间等核心数据
* @return R<?> 划价结果响应 成功返回操作成功提示编码M00002 失败:返回具体错误信息(如参数缺失、库房为空等) * @return R<?> 划价结果响应 成功返回操作成功提示编码M00002 失败:返回具体错误信息(如参数缺失、库房为空等)
*/ */
@Override @Override
@@ -231,292 +157,15 @@ public class NurseBillingAppService implements INurseBillingAppService {
// 1. 时间参数初始化:优先使用入参指定时间,无则默认当前系统时间 // 1. 时间参数初始化:优先使用入参指定时间,无则默认当前系统时间
Date curDate = new Date(); Date curDate = new Date();
Date startTime = regAdviceSaveParam.getStartTime() == null ? curDate : regAdviceSaveParam.getStartTime(); Date startTime = regAdviceSaveParam.getStartTime() == null ? curDate : regAdviceSaveParam.getStartTime();
Date authoredTime = Date authoredTime
regAdviceSaveParam.getAuthoredTime() == null ? curDate : regAdviceSaveParam.getAuthoredTime(); = regAdviceSaveParam.getAuthoredTime() == null ? curDate : regAdviceSaveParam.getAuthoredTime();
// 2. 入参校验:校验不通过直接返回错误响应(避免后续无效处理) // 2. 入参校验:校验不通过直接返回错误响应(避免后续无效处理)
>>>>>>> v1.3
R<?> checkResult = checkNurseBillingParam(regAdviceSaveParam); R<?> checkResult = checkNurseBillingParam(regAdviceSaveParam);
if (checkResult.getCode() != R.SUCCESS) { if (checkResult.getCode() != R.SUCCESS) {
return checkResult; return checkResult;
} }
<<<<<<< HEAD
// 3. 提取核心业务参数
Long organizationId = regAdviceSaveParam.getOrganizationId(); // 患者住院科室ID
List<RegAdviceSaveDto> allAdviceList = regAdviceSaveParam.getRegAdviceSaveList(); // 所有待处理医嘱列表
// 4. 按医嘱类型分类:拆分耗材类和诊疗活动类(分别处理)
List<RegAdviceSaveDto> deviceAdviceList = filterDeviceAdvice(allAdviceList); // 耗材类医嘱
List<RegAdviceSaveDto> activityAdviceList = filterActivityAdvice(allAdviceList); // 诊疗活动类医嘱
// 5. 生成全局唯一的医嘱签发编码
String signCode = assignSeqUtil.getSeq(AssignSeqEnum.ADVICE_SIGN.getPrefix(), ADVICE_SIGN_SEQ_LENGTH);
// 6. 处理耗材类医嘱划价(新增/修改/删除逻辑)
handleDeviceBilling(deviceAdviceList, null, signCode, organizationId, curDate);
// 7. 处理诊疗活动类医嘱划价(原代码未实现,保留扩展入口)
handleActivityBilling(activityAdviceList, signCode, organizationId, curDate, startTime, authoredTime);
// 8. 划价成功返回响应
return R.ok("住院划价签发成功");
}
/**
* 筛选耗材类医嘱
* 按医嘱类型枚举ItemType.DEVICE过滤仅保留耗材相关医嘱
*
* @param allAdviceList 所有待处理医嘱列表
* @return List<RegAdviceSaveDto> 耗材类医嘱列表
*/
private List<RegAdviceSaveDto> filterDeviceAdvice(List<RegAdviceSaveDto> allAdviceList) {
return allAdviceList.stream()
.filter(advice -> ItemType.DEVICE.getValue().equals(advice.getAdviceType()))
.collect(Collectors.toList());
}
/**
* 筛选诊疗活动类医嘱
* 按医嘱类型枚举ItemType.ACTIVITY过滤仅保留诊疗活动相关医嘱
*
* @param allAdviceList 所有待处理医嘱列表
* @return List<RegAdviceSaveDto> 诊疗活动类医嘱列表
*/
private List<RegAdviceSaveDto> filterActivityAdvice(List<RegAdviceSaveDto> allAdviceList) {
return allAdviceList.stream()
.filter(advice -> ItemType.ACTIVITY.getValue().equals(advice.getAdviceType()))
.collect(Collectors.toList());
}
/**
* 处理耗材类医嘱划价
* 核心流程:筛选临时耗材 → 处理删除(已收费校验)→ 新增/修改耗材记录 → 同步发放+费用项
*
* @param deviceAdviceList 耗材类医嘱列表
* @param deleteList 待删除的耗材医嘱列表可为null暂无删除场景传null
* @param signCode 医嘱签发编码(全局唯一)
* @param organizationId 患者住院科室ID
* @param curDate 当前操作时间
*/
private void handleDeviceBilling(List<RegAdviceSaveDto> deviceAdviceList, List<AdviceSaveDto> deleteList,
String signCode, Long organizationId, Date curDate) {
// 1. 筛选临时类型耗材仅处理临时医嘱TherapyTimeType.TEMPORARY的新增/修改
List<AdviceSaveDto> tempDeviceList = deviceAdviceList.stream()
.filter(advice -> TherapyTimeType.TEMPORARY.getValue().equals(advice.getTherapyEnum()))
.collect(Collectors.toList());
// 2. 处理耗材删除:校验已收费状态 + 关联数据删除
handleDelRequest(deleteList,SERVICE_TABLE_DEVICE_REQUEST);
// 3. 处理耗材新增/修改:同步保存耗材请求、发放记录、费用项
handleDeviceInsertOrUpdate(tempDeviceList, organizationId, curDate);
}
/**
* 处理诊疗活动类医嘱划价
* (扩展入口:原代码未实现,可参考耗材处理逻辑,关联服务请求表、费用项等)
*
* @param activityAdviceList 诊疗活动类医嘱列表
* @param signCode 医嘱签发编码
* @param organizationId 住院科室ID
* @param curDate 当前操作时间
* @param startTime 医嘱开始时间
* @param authoredTime 医嘱签发时间
*/
private void handleActivityBilling(List<RegAdviceSaveDto> activityAdviceList, String signCode,
Long organizationId, Date curDate, Date startTime, Date authoredTime) {
// 注:诊疗活动划价逻辑待实现,建议流程:
// 1. 筛选临时类型诊疗活动
// 2. 处理删除(如需)
// 3. 新增/修改服务请求记录IServiceRequestService
// 4. 同步生成/更新费用项IChargeItemService
}
/**
* 处理耗材删除逻辑
* 关键校验:已收费的耗材项目不允许删除
* 关联删除:耗材请求表 → 耗材发放记录 → 费用项表(级联删除关联数据)
*
* @param deleteList 待删除的耗材医嘱列表可为null
*/
private void handleDelRequest(List<AdviceSaveDto> deleteList,String serviceTable) {
// 空列表直接返回,避免无效循环和查询
if (deleteList == null || deleteList.isEmpty()) {
return;
}
// 提取待删除请求ID列表用于查询费用状态
List<Long> delRequestIds = deleteList.stream()
.map(AdviceSaveDto::getRequestId)
.collect(Collectors.toList());
// 校验:待删除项是否已收费,已收费则抛出异常阻止删除
checkDeletedDeviceChargeStatus(delRequestIds);
// 执行级联删除:循环处理每个待删除项的关联数据
for (AdviceSaveDto deleteDto : deleteList) {
Long requestId = deleteDto.getRequestId();
if (serviceTable.equals(SERVICE_TABLE_DEVICE_REQUEST)){
iDeviceRequestService.removeById(requestId); // 删除耗材请求主记录
iDeviceDispenseService.deleteDeviceDispense(requestId); // 删除关联的耗材发放记录
}
// 删除关联的费用项(按服务表+服务ID关联
iChargeItemService.deleteByServiceTableAndId(SERVICE_TABLE_DEVICE_REQUEST, requestId);
}
}
/**
* 校验待删除耗材的费用状态
* 查询待删除项对应的费用项若存在已收费ChargeItemStatus.BILLED状态则抛出业务异常
*
* @param delRequestIds 待删除的耗材请求ID列表
*/
private void checkDeletedDeviceChargeStatus(List<Long> delRequestIds) {
if (delRequestIds.isEmpty()) {
return;
}
// 查询待删除耗材对应的费用项列表
List<ChargeItem> chargeItemList = iChargeItemService.getChargeItemInfoByReqId(delRequestIds);
if (chargeItemList == null || chargeItemList.isEmpty()) {
return; // 无关联费用项,直接允许删除
}
// 校验是否存在已收费项使用stream.anyMatch简化循环判断
boolean hasBilledItem = chargeItemList.stream()
.anyMatch(ci -> ChargeItemStatus.BILLED.getValue().equals(ci.getStatusEnum()));
if (hasBilledItem) {
throw new ServiceException("删除失败:部分项目已完成收费,不支持直接删除,请联系收费人员处理后重试");
}
}
/**
* 处理耗材新增/修改
* 流程:构建耗材请求对象 → 保存/更新 → 处理耗材发放 → 构建费用项 → 保存/更新费用项
*
* @param tempDeviceList 临时耗材医嘱列表(新增/修改)
* @param organizationId 住院科室ID
* @param curDate 当前操作时间
*/
private void handleDeviceInsertOrUpdate(List<AdviceSaveDto> tempDeviceList, Long organizationId, Date curDate) {
if (tempDeviceList.isEmpty()) {
return; // 无临时耗材需处理,直接返回
}
// 循环处理每个临时耗材医嘱
for (AdviceSaveDto adviceDto : tempDeviceList) {
// 1. 构建耗材请求对象DeviceRequest并执行保存/更新
if (adviceDto.getRequestId() == null) {
adviceDto.setDbOpType(DbOpType.INSERT.getCode()); // 新增时设置操作类型
}else {
adviceDto.setDbOpType(DbOpType.UPDATE.getCode()); // 修改时设置操作类型
}
DeviceRequest deviceRequest = buildDeviceRequest(adviceDto, curDate);
iDeviceRequestService.saveOrUpdate(deviceRequest);
// 2. 同步处理耗材发放:根据操作类型(新增/修改)执行发放逻辑
iDeviceDispenseService.handleDeviceDispense(deviceRequest, adviceDto.getDbOpType());
// 3. 构建费用项对象ChargeItem并执行保存/更新
ChargeItem chargeItem = buildChargeItem(adviceDto, deviceRequest, curDate);
iChargeItemService.saveOrUpdate(chargeItem);
}
}
/**
* 构建耗材请求对象DeviceRequest
* 功能将医嘱DTOAdviceSaveDto的属性映射到耗材请求实体设置默认状态和业务编号
*
* @param adviceDto 耗材医嘱DTO含请求参数
* @param curDate 当前操作时间
* @return DeviceRequest 构建完成的耗材请求实体
*/
private DeviceRequest buildDeviceRequest(AdviceSaveDto adviceDto, Date curDate) {
DeviceRequest deviceRequest = new DeviceRequest();
// 基础配置:主键、状态、业务编号
deviceRequest.setId(adviceDto.getRequestId()); // 主键ID新增为null修改为已有ID
deviceRequest.setStatusEnum(RequestStatus.ACTIVE.getValue()); // 划价时直接签发,状态为"激活"
// 按日生成业务编号:前缀+4位序列号确保每日唯一
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), DEVICE_RES_NO_SEQ_LENGTH));
deviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源:医生处方
// 业务属性映射从DTO映射到实体
deviceRequest.setQuantity(adviceDto.getQuantity()); // 请求数量
deviceRequest.setUnitCode(adviceDto.getUnitCode()); // 单位编码
deviceRequest.setLotNumber(adviceDto.getLotNumber()); // 产品批号
deviceRequest.setCategoryEnum(adviceDto.getCategoryEnum()); // 请求类型(枚举)
deviceRequest.setDeviceDefId(adviceDto.getAdviceDefinitionId()); // 耗材定义ID
deviceRequest.setPatientId(adviceDto.getPatientId()); // 患者ID
deviceRequest.setRequesterId(adviceDto.getPractitionerId()); // 开方医生ID
deviceRequest.setOrgId(adviceDto.getFounderOrgId()); // 开方人科室ID
deviceRequest.setReqAuthoredTime(curDate); // 请求开始时间
deviceRequest.setPerformLocation(adviceDto.getLocationId()); // 发放耗材房ID
deviceRequest.setEncounterId(adviceDto.getEncounterId()); // 就诊ID
deviceRequest.setPackageId(adviceDto.getPackageId()); // 组套ID
deviceRequest.setContentJson(adviceDto.getContentJson()); // 请求内容JSON扩展信息
deviceRequest.setYbClassEnum(adviceDto.getYbClassEnum()); // 医保类别编码
deviceRequest.setConditionId(adviceDto.getConditionId()); // 诊断ID
deviceRequest.setEncounterDiagnosisId(adviceDto.getEncounterDiagnosisId()); // 就诊诊断ID
return deviceRequest;
}
/**
* 构建费用项对象ChargeItem
* 功能关联耗材请求实体和医嘱DTO映射费用相关属性设置默认状态和业务编号
*
* @param adviceDto 耗材医嘱DTO含费用参数
* @param deviceRequest 已保存的耗材请求实体关联服务ID
* @param curDate 当前操作时间
* @return ChargeItem 构建完成的费用项实体
*/
private ChargeItem buildChargeItem(AdviceSaveDto adviceDto, DeviceRequest deviceRequest,Date curDate) {
ChargeItem chargeItem = new ChargeItem();
// 基础配置:主键、状态、业务编号
chargeItem.setId(adviceDto.getChargeItemId()); // 费用项ID新增为null修改为已有ID
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 初始状态:草稿(未收费)
// 业务编号:费用项前缀+耗材请求编号(确保与耗材请求一一关联)
chargeItem.setBusNo(CHARGE_ITEM_BUS_NO_PREFIX.concat(deviceRequest.getBusNo()));
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源:医生处方
// 业务属性映射:患者、就诊、定价相关信息
chargeItem.setPatientId(adviceDto.getPatientId()); // 患者ID
chargeItem.setContextEnum(adviceDto.getAdviceType()); // 费用类型(耗材)
chargeItem.setEncounterId(adviceDto.getEncounterId()); // 就诊ID
chargeItem.setDefinitionId(adviceDto.getDefinitionId()); // 费用定价ID
chargeItem.setDefDetailId(adviceDto.getDefinitionDetailId()); // 定价子表主键(明细定价)
chargeItem.setEntererId(adviceDto.getPractitionerId()); // 开立人ID开方医生
chargeItem.setRequestingOrgId(SecurityUtils.getLoginUser().getOrgId()); // 开立科室ID
chargeItem.setEnteredDate(curDate); // 开立时间
chargeItem.setServiceTable(SERVICE_TABLE_DEVICE_REQUEST); // 医疗服务类型(关联耗材请求表)
chargeItem.setServiceId(deviceRequest.getId()); // 医疗服务ID关联耗材请求ID
chargeItem.setProductTable(SERVICE_TABLE_DEVICE_REQUEST);// 产品所在表(耗材表)
chargeItem.setProductId(adviceDto.getAdviceDefinitionId());// 产品ID耗材定义ID
chargeItem.setAccountId(adviceDto.getAccountId()); // 关联账户ID患者账户
chargeItem.setConditionId(adviceDto.getConditionId()); // 诊断ID
chargeItem.setEncounterDiagnosisId(adviceDto.getEncounterDiagnosisId()); // 就诊诊断ID
// 费用核心属性:数量、单位、单价、总价
chargeItem.setQuantityValue(adviceDto.getQuantity()); // 数量(与耗材请求一致)
chargeItem.setQuantityUnit(adviceDto.getUnitCode()); // 单位(与耗材请求一致)
chargeItem.setUnitPrice(adviceDto.getUnitPrice()); // 单价从DTO传入已定价
chargeItem.setTotalPrice(adviceDto.getTotalPrice()); // 总价数量×单价DTO已计算
return chargeItem;
}
/**
* 划价入参校验
* 校验规则1. 参数非空 2. 科室ID非空 3. 医嘱列表非空 4. 临时耗材库存校验
*
* @param regAdviceSaveParam 划价请求参数
* @return R<?> 校验结果成功返回R.ok()失败返回R.fail()
*/
private R<?> checkNurseBillingParam(RegAdviceSaveParam regAdviceSaveParam) {
// 1. 整体参数非空校验
=======
// 3. 提取核心业务参数住院科室ID优先入参无则取登录用户所属科室 // 3. 提取核心业务参数住院科室ID优先入参无则取登录用户所属科室
Long organizationId = regAdviceSaveParam.getOrganizationId() == null ? loginUser.getOrgId() Long organizationId = regAdviceSaveParam.getOrganizationId() == null ? loginUser.getOrgId()
: regAdviceSaveParam.getOrganizationId(); : regAdviceSaveParam.getOrganizationId();
@@ -543,7 +192,8 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
/** /**
* 删除住院划价记录(核心实现) 流程:参数校验 → 分类筛选医嘱 → 已收费状态校验 → 级联删除关联数据 → 返回结果 事务特性:所有删除操作原子化,任一环节失败整体回滚 * 删除住院划价记录(核心实现) 流程:参数校验 → 分类筛选医嘱 → 已收费状态校验 → 级联删除关联数据 → 返回结果
* 事务特性:所有删除操作原子化,任一环节失败整体回滚
* *
* @return R<?> 删除结果响应 * @return R<?> 删除结果响应
*/ */
@@ -588,18 +238,18 @@ public class NurseBillingAppService implements INurseBillingAppService {
Integer exeStatus = inpatientAdviceParam.getExeStatus(); Integer exeStatus = inpatientAdviceParam.getExeStatus();
inpatientAdviceParam.setExeStatus(null); inpatientAdviceParam.setExeStatus(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<InpatientAdviceParam> queryWrapper = QueryWrapper<InpatientAdviceParam> queryWrapper
HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null); = HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
// 手动拼接住院患者id条件 // 手动拼接住院患者id条件
if (encounterIds != null && !encounterIds.isEmpty()) { if (encounterIds != null && !encounterIds.isEmpty()) {
List<Long> encounterIdList = List<Long> encounterIdList
Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList(); = Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList();
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList); queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList);
} }
// 患者医嘱分页列表 // 患者医嘱分页列表
Page<InpatientAdviceDto> inpatientAdvicePage = Page<InpatientAdviceDto> inpatientAdvicePage
nurseBillingAppMapper.getInNurseBillingPage(new Page<>(pageNo, pageSize), queryWrapper, = nurseBillingAppMapper.getInNurseBillingPage(new Page<>(pageNo, pageSize), queryWrapper,
CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST,
RequestStatus.DRAFT.getValue(), EncounterActivityStatus.ACTIVE.getValue(), LocationForm.BED.getValue(), RequestStatus.DRAFT.getValue(), EncounterActivityStatus.ACTIVE.getValue(), LocationForm.BED.getValue(),
ParticipantType.ADMITTING_DOCTOR.getCode(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(), ParticipantType.ADMITTING_DOCTOR.getCode(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(),
@@ -622,112 +272,47 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// ======================== 入参校验方法 ======================== // ======================== 入参校验方法 ========================
/** /**
* 划价入参校验(通用校验逻辑) 校验规则1. 参数非空 2. 住院科室ID非空 3. 医嘱列表非空 4. 隐含库房校验(耗材类单独校验) 校验失败直接返回错误响应,不进入后续业务逻辑 * 划价入参校验(通用校验逻辑) 校验规则1. 参数非空 2. 住院科室ID非空 3. 医嘱列表非空 4. 隐含库房校验(耗材类单独校验)
* 校验失败直接返回错误响应,不进入后续业务逻辑
* *
* @param regAdviceSaveParam 划价请求参数体 * @param regAdviceSaveParam 划价请求参数体
* @return R<?> 校验结果成功返回R.ok()失败返回R.fail(错误信息) * @return R<?> 校验结果成功返回R.ok()失败返回R.fail(错误信息)
*/ */
private R<?> checkNurseBillingParam(RegAdviceSaveParam regAdviceSaveParam) { private R<?> checkNurseBillingParam(RegAdviceSaveParam regAdviceSaveParam) {
// 1. 整体参数非空校验请求体为null直接返回失败 // 1. 整体参数非空校验请求体为null直接返回失败
>>>>>>> v1.3
if (regAdviceSaveParam == null) { if (regAdviceSaveParam == null) {
return R.fail("划价请求失败:未获取到有效请求数据,请重新提交"); return R.fail("划价请求失败:未获取到有效请求数据,请重新提交");
} }
<<<<<<< HEAD
// 2. 核心字段非空校验患者住院科室ID
=======
// 2. 核心字段非空校验患者住院科室ID不能为空 // 2. 核心字段非空校验患者住院科室ID不能为空
>>>>>>> v1.3
if (regAdviceSaveParam.getOrganizationId() == null) { if (regAdviceSaveParam.getOrganizationId() == null) {
return R.fail("划价请求失败:患者住院科室信息缺失,请确认患者科室后重试"); return R.fail("划价请求失败:患者住院科室信息缺失,请确认患者科室后重试");
} }
<<<<<<< HEAD
// 3. 医嘱列表非空校验
=======
// 3. 医嘱列表非空校验:必须选择至少一个待划价项目 // 3. 医嘱列表非空校验:必须选择至少一个待划价项目
>>>>>>> v1.3
List<RegAdviceSaveDto> adviceList = regAdviceSaveParam.getRegAdviceSaveList(); List<RegAdviceSaveDto> adviceList = regAdviceSaveParam.getRegAdviceSaveList();
if (adviceList == null || adviceList.isEmpty()) { if (adviceList == null || adviceList.isEmpty()) {
return R.fail("划价请求失败:未选择任何待划价项目,请添加医嘱后提交"); return R.fail("划价请求失败:未选择任何待划价项目,请添加医嘱后提交");
} }
<<<<<<< HEAD
// 4. 临时耗材库存校验:仅校验非删除、非诊疗活动的临时医嘱
=======
// 4. 库存校验:临时注释(当前需求:划价不校验库存,实际发放时校验) // 4. 库存校验:临时注释(当前需求:划价不校验库存,实际发放时校验)
// 若后续需要恢复库存校验,可解除以下注释 // 若后续需要恢复库存校验,可解除以下注释
/* /*
>>>>>>> v1.3
List<AdviceSaveDto> needCheckInventoryList = adviceList.stream() List<AdviceSaveDto> needCheckInventoryList = adviceList.stream()
.filter(advice -> TherapyTimeType.TEMPORARY.getValue().equals(advice.getTherapyEnum()) .filter(advice -> TherapyTimeType.TEMPORARY.getValue().equals(advice.getTherapyEnum())
&& !DbOpType.DELETE.getCode().equals(advice.getDbOpType()) && !DbOpType.DELETE.getCode().equals(advice.getDbOpType())
&& !ItemType.ACTIVITY.getValue().equals(advice.getAdviceType())) && !ItemType.ACTIVITY.getValue().equals(advice.getAdviceType()))
.collect(Collectors.toList()); .collect(Collectors.toList());
<<<<<<< HEAD
// 调用工具类校验库存返回非null则表示库存不足
String inventoryTip = adviceUtils.checkInventory(new ArrayList<>(needCheckInventoryList));
if (inventoryTip != null) {
// 库存提示已包含具体耗材名称和短缺数量,直接拼接操作建议
return R.fail("划价失败:" + inventoryTip + ",请联系库房确认库存或调整申请数量");
}
=======
String inventoryTip = adviceUtils.checkInventory(new ArrayList<>(needCheckInventoryList)); String inventoryTip = adviceUtils.checkInventory(new ArrayList<>(needCheckInventoryList));
if (inventoryTip != null) { if (inventoryTip != null) {
return R.fail("划价失败:" + inventoryTip + ",请联系库房确认库存或调整申请数量"); return R.fail("划价失败:" + inventoryTip + ",请联系库房确认库存或调整申请数量");
} }
*/ */
>>>>>>> v1.3
// 所有校验通过 // 所有校验通过
return R.ok(); return R.ok();
} }
<<<<<<< HEAD
// ======================== 以下方法原代码未实现,保留接口方法签名 ========================
@Override
public R<?> getBillingListByEncounterId() {
// 功能根据就诊ID查询划价列表待实现
return null;
}
@Override
public R<?> deleteInNurseBilling() {
// 功能:删除住院划价记录(待实现)
// List<AdviceSaveDto> deleteList
return null;
}
@Override
public R<?> addOrderBilling() {
// 功能:新增订单划价(待实现)
return null;
}
@Override
public R<?> deleteOrderBilling() {
// 功能:删除订单划价(待实现)
return null;
}
@Override
public R<?> updateOrderBilling() {
// 功能:修改订单划价(待实现)
return null;
}
@Override
public R<?> getOrderBillingByRequestId() {
// 功能根据请求ID查询订单划价待实现
return null;
}
=======
// ======================== 医嘱分类工具方法 ======================== // ======================== 医嘱分类工具方法 ========================
/** /**
@@ -753,9 +338,9 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// ======================== 耗材类划价处理 ======================== // ======================== 耗材类划价处理 ========================
/** /**
* 处理耗材类医嘱划价(核心子流程) 流程:筛选临时耗材 → 校验发放库房 → 生成耗材请求 → 生成执行记录 → 生成耗材发放 → 生成费用项 特殊规则:临时耗材划价不校验库存、不预减库存(仅记录发放需求,实际发放时扣库) * 处理耗材类医嘱划价(核心子流程) 流程:筛选临时耗材 → 校验发放库房 → 生成耗材请求 → 生成执行记录 → 生成耗材发放 → 生成费用项
* 特殊规则:临时耗材划价不校验库存、不预减库存(仅记录发放需求,实际发放时扣库)
* *
* @param deviceAdviceList 耗材类医嘱列表(已筛选) * @param deviceAdviceList 耗材类医嘱列表(已筛选)
* @param signCode 全局签发编码(关联同一批次划价) * @param signCode 全局签发编码(关联同一批次划价)
@@ -801,9 +386,9 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// ======================== 诊疗活动类划价处理 ======================== // ======================== 诊疗活动类划价处理 ========================
/** /**
* 处理诊疗活动类医嘱划价(核心子流程) 流程:生成服务请求 → 生成执行记录 → 生成费用项 → 处理诊疗子项(如有) 特殊规则:诊疗活动可能包含子项(如套餐类活动),需递归处理子项划价 * 处理诊疗活动类医嘱划价(核心子流程) 流程:生成服务请求 → 生成执行记录 → 生成费用项 → 处理诊疗子项(如有)
* 特殊规则:诊疗活动可能包含子项(如套餐类活动),需递归处理子项划价
* *
* @param activityAdviceList 诊疗活动类医嘱列表(已筛选) * @param activityAdviceList 诊疗活动类医嘱列表(已筛选)
* @param signCode 全局签发编码(关联同一批次划价) * @param signCode 全局签发编码(关联同一批次划价)
@@ -817,8 +402,8 @@ public class NurseBillingAppService implements INurseBillingAppService {
// 循环处理每个诊疗活动医嘱 // 循环处理每个诊疗活动医嘱
for (AdviceSaveDto adviceDto : activityAdviceList) { for (AdviceSaveDto adviceDto : activityAdviceList) {
// 1. 生成诊疗活动请求记录WOR_SERVICE_REQUEST状态设为激活来源标记为护士划价 // 1. 生成诊疗活动请求记录WOR_SERVICE_REQUEST状态设为激活来源标记为护士划价
ServiceRequest serviceRequest = ServiceRequest serviceRequest
this.buildActivityRequest(adviceDto, signCode, organizationId, curDate, startTime, authoredTime); = this.buildActivityRequest(adviceDto, signCode, organizationId, curDate, startTime, authoredTime);
// 2. 生成医嘱执行记录CLIN_PROCEDURE关联服务请求记录执行状态 // 2. 生成医嘱执行记录CLIN_PROCEDURE关联服务请求记录执行状态
Long procedureId = this.addProcedureRecord(serviceRequest.getEncounterId(), // 就诊ID Long procedureId = this.addProcedureRecord(serviceRequest.getEncounterId(), // 就诊ID
@@ -842,7 +427,6 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// ======================== 执行记录工具方法 ======================== // ======================== 执行记录工具方法 ========================
/** /**
* 生成医嘱执行记录(通用方法,支持耗材/诊疗活动两种类型) 功能调用执行记录服务创建CLIN_PROCEDURE表记录关联请求数据与执行信息 * 生成医嘱执行记录(通用方法,支持耗材/诊疗活动两种类型) 功能调用执行记录服务创建CLIN_PROCEDURE表记录关联请求数据与执行信息
* *
@@ -867,7 +451,6 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// ======================== 实体构建工具方法(请求/费用项)======================== // ======================== 实体构建工具方法(请求/费用项)========================
/** /**
* 构建耗材请求实体DeviceRequest 功能将医嘱DTO参数映射为耗材请求实体填充默认配置状态、业务编号、来源等 * 构建耗材请求实体DeviceRequest 功能将医嘱DTO参数映射为耗材请求实体填充默认配置状态、业务编号、来源等
* *
@@ -1011,7 +594,8 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
/** /**
* 构建费用项实体ChargeItem 功能:关联请求记录(耗材/诊疗与费用信息生成待结算的费用项ADM_CHARGE_ITEM表 通用性:支持耗材、诊疗活动两种类型的费用项构建 * 构建费用项实体ChargeItem 功能:关联请求记录(耗材/诊疗与费用信息生成待结算的费用项ADM_CHARGE_ITEM表
* 通用性:支持耗材、诊疗活动两种类型的费用项构建
* *
* @param adviceDto 医嘱DTO含费用相关参数单价、总价等 * @param adviceDto 医嘱DTO含费用相关参数单价、总价等
* @param requestBusNo 关联请求的业务编号(耗材/服务请求的busNo * @param requestBusNo 关联请求的业务编号(耗材/服务请求的busNo
@@ -1066,9 +650,9 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// ======================== 耗材删除相关方法 ======================== // ======================== 耗材删除相关方法 ========================
/** /**
* 处理耗材删除逻辑(级联删除关联数据) 核心规则:已收费的耗材项目不允许删除,未收费项目级联删除关联数据 级联删除顺序:耗材请求表 → 耗材发放表 → 费用项表 * 处理耗材删除逻辑(级联删除关联数据) 核心规则:已收费的耗材项目不允许删除,未收费项目级联删除关联数据 级联删除顺序:耗材请求表 → 耗材发放表
* → 费用项表
* *
* @param requestIds 待删除的耗材医嘱列表可为null * @param requestIds 待删除的耗材医嘱列表可为null
* @param serviceTable 关联服务表名(此处为耗材请求表) * @param serviceTable 关联服务表名(此处为耗材请求表)
@@ -1123,15 +707,14 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
// 2. 校验是否存在已收费项状态为BILLED // 2. 校验是否存在已收费项状态为BILLED
boolean hasBilledItem = boolean hasBilledItem
chargeItemList.stream().anyMatch(ci -> ChargeItemStatus.BILLED.getValue().equals(ci.getStatusEnum())); = chargeItemList.stream().anyMatch(ci -> ChargeItemStatus.BILLED.getValue().equals(ci.getStatusEnum()));
if (hasBilledItem) { if (hasBilledItem) {
throw new ServiceException("删除失败:部分项目已完成收费(结算),不支持直接删除,请联系收费人员处理后重试"); throw new ServiceException("删除失败:部分项目已完成收费(结算),不支持直接删除,请联系收费人员处理后重试");
} }
} }
// ======================== 未实现接口方法(保留签名,待扩展)======================== // ======================== 未实现接口方法(保留签名,待扩展)========================
/** /**
* 新增订单划价(待实现) 功能:针对订单类型的划价(如患者自主购买耗材/服务),生成对应的费用项 * 新增订单划价(待实现) 功能:针对订单类型的划价(如患者自主购买耗材/服务),生成对应的费用项
* *
@@ -1180,8 +763,8 @@ public class NurseBillingAppService implements INurseBillingAppService {
return R.fail("就诊ID不能为空"); return R.fail("就诊ID不能为空");
} }
costDetailSearchParam.setEncounterIds(null); costDetailSearchParam.setEncounterIds(null);
QueryWrapper<CostDetailSearchParam> queryWrapper = QueryWrapper<CostDetailSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(costDetailSearchParam, null, null, request); = HisQueryUtils.buildQueryWrapper(costDetailSearchParam, null, null, request);
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIds); queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIds);
List<CostDetailDto> list = iChargeItemService.getCostDetails(queryWrapper, ChargeItemStatus.BILLABLE.getValue(), List<CostDetailDto> list = iChargeItemService.getCostDetails(queryWrapper, ChargeItemStatus.BILLABLE.getValue(),
ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDED.getValue(), ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDED.getValue(),
@@ -1208,16 +791,16 @@ public class NurseBillingAppService implements INurseBillingAppService {
costDetailDto.setOrgName(organizationService.getById(orgId).getName()); costDetailDto.setOrgName(organizationService.getById(orgId).getName());
}); });
// 根据EncounterId分组 // 根据EncounterId分组
Map<Long, List<CostDetailDto>> map = Map<Long, List<CostDetailDto>> map
dataList.stream().collect(Collectors.groupingBy(CostDetailDto::getEncounterId)); = dataList.stream().collect(Collectors.groupingBy(CostDetailDto::getEncounterId));
map.forEach((key, value) -> { map.forEach((key, value) -> {
// 新加一条小计 // 新加一条小计
value.add(new CostDetailDto().setEncounterId(key).setChargeName("小计").setTotalPrice( value.add(new CostDetailDto().setEncounterId(key).setChargeName("小计").setTotalPrice(
value.stream().map(CostDetailDto::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add))); value.stream().map(CostDetailDto::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add)));
}); });
// 收集要导出的数据 // 收集要导出的数据
List<CostDetailExcelOutDto> excelOutList = List<CostDetailExcelOutDto> excelOutList
map.entrySet().stream().map(entry -> new CostDetailExcelOutDto(entry.getKey(), entry.getValue(), = map.entrySet().stream().map(entry -> new CostDetailExcelOutDto(entry.getKey(), entry.getValue(),
entry.getValue().get(0).getPatientName())).toList(); entry.getValue().get(0).getPatientName())).toList();
try { try {
// 住院记账-费用明细 导出 // 住院记账-费用明细 导出
@@ -1229,5 +812,4 @@ public class NurseBillingAppService implements INurseBillingAppService {
} }
} }
>>>>>>> v1.3
} }

View File

@@ -8,26 +8,16 @@ import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.DateUtils; import com.core.common.utils.DateUtils;
import com.core.common.utils.SecurityUtils; import com.core.common.utils.SecurityUtils;
import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.CommonConstants;
<<<<<<< HEAD
import com.openhis.common.enums.AssignSeqEnum;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.utils.HisQueryUtils;
=======
import com.openhis.common.enums.*; import com.openhis.common.enums.*;
import com.openhis.common.utils.HisQueryUtils; import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.common.appservice.impl.CommonServiceImpl; import com.openhis.web.common.appservice.impl.CommonServiceImpl;
import com.openhis.web.common.dto.LocationDto; import com.openhis.web.common.dto.LocationDto;
>>>>>>> v1.3
import com.openhis.web.common.dto.UnitDto; import com.openhis.web.common.dto.UnitDto;
import com.openhis.web.inhospitalnursestation.appservice.IOrgDeviceStockTakeAppService; import com.openhis.web.inhospitalnursestation.appservice.IOrgDeviceStockTakeAppService;
import com.openhis.web.inhospitalnursestation.dto.OrgDeviceDto; import com.openhis.web.inhospitalnursestation.dto.OrgDeviceDto;
import com.openhis.web.inhospitalnursestation.dto.OrgDeviceSummaryFromDto; import com.openhis.web.inhospitalnursestation.dto.OrgDeviceSummaryFromDto;
import com.openhis.web.inhospitalnursestation.dto.OrgDeviceSummaryParam; import com.openhis.web.inhospitalnursestation.dto.OrgDeviceSummaryParam;
import com.openhis.web.inhospitalnursestation.mapper.OrgDeviceStockTakeAppMapper; import com.openhis.web.inhospitalnursestation.mapper.OrgDeviceStockTakeAppMapper;
<<<<<<< HEAD
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
=======
>>>>>>> v1.3
import com.openhis.workflow.domain.InventoryItem; import com.openhis.workflow.domain.InventoryItem;
import com.openhis.workflow.mapper.InventoryItemMapper; import com.openhis.workflow.mapper.InventoryItemMapper;
import com.openhis.workflow.service.IDeviceDispenseService; import com.openhis.workflow.service.IDeviceDispenseService;
@@ -39,10 +29,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
<<<<<<< HEAD
import java.time.LocalDate;
=======
>>>>>>> v1.3
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -76,8 +62,6 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
@Resource @Resource
private InventoryItemMapper inventoryItemMapper; private InventoryItemMapper inventoryItemMapper;
<<<<<<< HEAD
=======
@Resource @Resource
private CommonServiceImpl commonService; private CommonServiceImpl commonService;
@@ -92,16 +76,10 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
return R.ok(inventoryPharmacyList); return R.ok(inventoryPharmacyList);
} }
>>>>>>> v1.3
/** /**
* 查询科室耗材汇总 * 查询科室耗材汇总
* *
* @param orgDeviceSummaryParam 查询条件 * @param orgDeviceSummaryParam 查询条件
<<<<<<< HEAD
* @param startTime 开始时间
* @param endTime 结束时间
=======
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
@@ -109,115 +87,24 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
* @return 科室耗材汇总单 * @return 科室耗材汇总单
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, String startTime,
String endTime, Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
=======
public R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, Integer pageNo, public R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, Integer pageNo,
Integer pageSize, String searchKey, HttpServletRequest request) { Integer pageSize, String searchKey, HttpServletRequest request) {
>>>>>>> v1.3
pageSize = Integer.MAX_VALUE; pageSize = Integer.MAX_VALUE;
QueryWrapper<OrgDeviceDto> queryWrapper = HisQueryUtils.buildQueryWrapper(orgDeviceSummaryParam, searchKey, QueryWrapper<OrgDeviceDto> queryWrapper = HisQueryUtils.buildQueryWrapper(orgDeviceSummaryParam, searchKey,
new HashSet<>(List.of(CommonConstants.FieldName.ItemName)), request); new HashSet<>(List.of(CommonConstants.FieldName.ItemName)), request);
<<<<<<< HEAD
if (!(startTime == null || endTime == null)) {
queryWrapper.between(CommonConstants.FieldName.ApplyTime, LocalDate.parse(startTime),
LocalDate.parse(endTime));
}
Page<OrgDeviceDto> orgDeviceDtoPage = Page<OrgDeviceDto> orgDeviceDtoPage
orgDeviceStockTakeAppMapper.selectOrgDeviceInfo(new Page<>(pageNo, pageSize), queryWrapper); = orgDeviceStockTakeAppMapper.selectOrgDeviceInfo(new Page<>(pageNo, pageSize), queryWrapper,
List<OrgDeviceDto> orgDeviceList =
new ArrayList<>(orgDeviceDtoPage.getRecords()).stream().filter(x -> x.getDispenseId() != null).toList();
=======
Page<OrgDeviceDto> orgDeviceDtoPage =
orgDeviceStockTakeAppMapper.selectOrgDeviceInfo(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.IMP.getValue(), RequestStatus.COMPLETED.getValue(), EncounterClass.IMP.getValue(), RequestStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), ChargeItemStatus.BILLABLE.getValue()); DispenseStatus.PREPARATION.getValue(), ChargeItemStatus.BILLABLE.getValue());
List<OrgDeviceDto> orgDeviceList = new ArrayList<>(orgDeviceDtoPage.getRecords()); List<OrgDeviceDto> orgDeviceList = new ArrayList<>(orgDeviceDtoPage.getRecords());
>>>>>>> v1.3
// 根据项目id + 批次号 + 库房号分组 // 根据项目id + 批次号 + 库房号分组
Map<String, List<OrgDeviceDto>> orgDeviceGroupBy = Map<String, List<OrgDeviceDto>> orgDeviceGroupBy
orgDeviceList.stream().collect(Collectors.groupingBy(item -> item.getItemId() + CommonConstants.Common.DASH = orgDeviceList.stream().collect(Collectors.groupingBy(item -> item.getItemId() + CommonConstants.Common.DASH
+ item.getLotNumber() + CommonConstants.Common.DASH + item.getSourceLocationId())); + item.getLotNumber() + CommonConstants.Common.DASH + item.getSourceLocationId()));
<<<<<<< HEAD
ArrayList<OrgDeviceSummaryFromDto> orgDeviceSummaryFromDtoList = new ArrayList<>();
orgDeviceGroupBy.forEach((k, v) -> {
OrgDeviceSummaryFromDto orgDeviceSummaryFromDto = new OrgDeviceSummaryFromDto();
String itemId = k.split(CommonConstants.Common.DASH)[0];
String lotNumber = k.split(CommonConstants.Common.DASH)[1];
String sourceLocationId = k.split(CommonConstants.Common.DASH)[2];
OrgDeviceDto orgDeviceDtoFirst = v.get(0);
// 拆零比例
BigDecimal partPercent = orgDeviceDtoFirst.getPartPercent();
// 最小单位
String minUnitCode = orgDeviceDtoFirst.getMinUnitCode();
// 常规单位
String unitCode = orgDeviceDtoFirst.getMaxUnitCode();
if (minUnitCode == null || unitCode == null || partPercent == null) {
throw new ServiceException("耗材信息有误,请联系管理员");
}
List<Long> dispenseIdList = new ArrayList<>();
// 最小单位数量
BigDecimal minQuantity = BigDecimal.ZERO;
for (OrgDeviceDto orgDeviceDto : v) {
BigDecimal quantity = orgDeviceDto.getQuantity();
if (unitCode.equals(orgDeviceDto.getUnitCode())) {
// 转换为小单位进行累加
quantity = orgDeviceDto.getQuantity().multiply(partPercent);
}
minQuantity = minQuantity.add(quantity);
dispenseIdList.add(orgDeviceDto.getDispenseId());
}
List<UnitDto> unitList = new ArrayList<>();
UnitDto unitDto = new UnitDto();
// 单位列表
unitDto.setUnitCode(orgDeviceDtoFirst.getUnitCode()).setMinUnitCode(minUnitCode);
unitList.add(unitDto);
orgDeviceSummaryFromDto.setItemId(Long.valueOf(itemId)) // 器材id
.setName(orgDeviceDtoFirst.getItemName()) // 器材名称
.setTotalVolume(orgDeviceDtoFirst.getTotalVolume()) // 规格
.setManufacturer(orgDeviceDtoFirst.getManufacturer()) // 厂家
.setLotNumber(lotNumber) // 批号
.setUnitPrice(orgDeviceDtoFirst.getUnitPrice()) // 单价
.setDispenseQuantity(minQuantity) // 发放数量
.setUnitCode(orgDeviceDtoFirst.getUnitCode()) // 单位
.setMinUnitCode(minUnitCode) // 最小单位
.setPartPercent(partPercent) // 拆零比
.setUnitCode_dictText(orgDeviceDtoFirst.getUnitCode_dictText()) // 单位文字
.setSourceLocationId(Long.valueOf(sourceLocationId)) // 发放地点
.setDispenseIdList(dispenseIdList) // 发放id列表
.setUnitList(unitList); // 单位列表
orgDeviceSummaryFromDtoList.add(orgDeviceSummaryFromDto);
});
List<Long> itemIdList = orgDeviceSummaryFromDtoList.stream().map(OrgDeviceSummaryFromDto::getItemId).toList();
List<InventoryItem> inventoryItemList = inventoryItemService.selectInventoryByItemIdList(itemIdList, 1);
for (InventoryItem inventoryItem : inventoryItemList)
for (OrgDeviceSummaryFromDto orgDeviceSummaryFromDto : orgDeviceSummaryFromDtoList)
if (orgDeviceSummaryFromDto.getItemId().equals(inventoryItem.getItemId())
&& orgDeviceSummaryFromDto.getLotNumber().equals(inventoryItem.getLotNumber())
&& orgDeviceSummaryFromDto.getSourceLocationId().equals(inventoryItem.getLocationId())) {
// 库存数量
orgDeviceSummaryFromDto.setQuantity(inventoryItem.getQuantity());
// 库存id
orgDeviceSummaryFromDto.setInventoryItemId(inventoryItem.getId());
}
=======
List<OrgDeviceSummaryFromDto> orgDeviceSummaryFromDtoList = new ArrayList<>(); List<OrgDeviceSummaryFromDto> orgDeviceSummaryFromDtoList = new ArrayList<>();
// 对分组后的数量进行汇总 // 对分组后的数量进行汇总
@@ -291,8 +178,8 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
if (!itemIdList.isEmpty()) { if (!itemIdList.isEmpty()) {
List<InventoryItem> inventoryItemList = inventoryItemService.selectInventoryByItemIdList(itemIdList, List<InventoryItem> inventoryItemList = inventoryItemService.selectInventoryByItemIdList(itemIdList,
SecurityUtils.getLoginUser().getTenantId()); SecurityUtils.getLoginUser().getTenantId());
for (InventoryItem inventoryItem : inventoryItemList) for (InventoryItem inventoryItem : inventoryItemList) {
for (OrgDeviceSummaryFromDto orgDeviceSummaryFromDto : orgDeviceSummaryFromDtoList) for (OrgDeviceSummaryFromDto orgDeviceSummaryFromDto : orgDeviceSummaryFromDtoList) {
if (orgDeviceSummaryFromDto.getItemId().equals(inventoryItem.getItemId()) if (orgDeviceSummaryFromDto.getItemId().equals(inventoryItem.getItemId())
&& orgDeviceSummaryFromDto.getLotNumber().equals(inventoryItem.getLotNumber()) && orgDeviceSummaryFromDto.getLotNumber().equals(inventoryItem.getLotNumber())
&& orgDeviceSummaryFromDto.getSourceLocationId().equals(inventoryItem.getLocationId())) { && orgDeviceSummaryFromDto.getSourceLocationId().equals(inventoryItem.getLocationId())) {
@@ -302,7 +189,8 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
orgDeviceSummaryFromDto.setInventoryItemId(inventoryItem.getId()); orgDeviceSummaryFromDto.setInventoryItemId(inventoryItem.getId());
} }
} }
>>>>>>> v1.3 }
}
return R.ok(orgDeviceSummaryFromDtoList); return R.ok(orgDeviceSummaryFromDtoList);
} }
@@ -313,77 +201,11 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
* @return 科室耗材汇总单 * @return 科室耗材汇总单
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> orgDeviceSummary(OrgDeviceSummaryParam orgDeviceSummaryParam) {
=======
public R<?> orgDeviceSummary(List<OrgDeviceSummaryParam> orgDeviceSummaryParamList) { public R<?> orgDeviceSummary(List<OrgDeviceSummaryParam> orgDeviceSummaryParamList) {
>>>>>>> v1.3
// 申请时间 // 申请时间
Date now = DateUtils.getNowDate(); Date now = DateUtils.getNowDate();
// 申请人 // 申请人
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId(); Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
<<<<<<< HEAD
// 汇总单据号
String busNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_SUMMARY_NO.getPrefix(), 4);
// 数量
BigDecimal stockTakeQuantity = orgDeviceSummaryParam.getStockTakeQuantity();
// 使用单位
String useUnitCode = orgDeviceSummaryParam.getUseUnitCode();
// 最小单位
String minUnitCode = orgDeviceSummaryParam.getMinUnitCode();
// 拆零比
BigDecimal partPercent = orgDeviceSummaryParam.getPartPercent();
// 发放id列表
List<Long> dispenseIdList = orgDeviceSummaryParam.getDispenseIdList();
if (orgDeviceSummaryParam.getInventoryItemId() == null) {
return R.ok("未匹配到库存");
}
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 获取库存信息
InventoryItem inventoryItem = inventoryItemMapper.selectById(orgDeviceSummaryParam.getInventoryItemId());
if (inventoryItem != null) {
if (PublicationStatus.ACTIVE.getValue().equals(inventoryItem.getInventoryStatusEnum())) {
// 库存数量判定
if (useUnitCode.equals(inventoryItem.getUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = inventoryItem.getQuantity().subtract(stockTakeQuantity);
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail("当前库存数量不足");
} else {
inventoryItem.setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = inventoryItem.getQuantity().subtract(partPercent.multiply(stockTakeQuantity));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail("当前库存数量不足");
} else {
inventoryItem.setQuantity(quantity);
}
}
inventoryItemList.add(inventoryItem);
}
// 库存更新
inventoryItemService.updateBatchById(inventoryItemList);
// 添加汇总单
Long supplyRequestId = supplyRequestService.createDeviceSummarySupplyRequest(
orgDeviceSummaryParam.getItemId(), orgDeviceSummaryParam.getSourceLocationId(),
orgDeviceSummaryParam.getLotNumber(), stockTakeQuantity, minUnitCode, practitionerId, now, busNo);
supplyDeliveryService.createDeviceSummarySupplyDelivery(orgDeviceSummaryParam.getItemId(),
orgDeviceSummaryParam.getLotNumber(), stockTakeQuantity, minUnitCode, supplyRequestId);
// 耗材发放状态更新
deviceDispenseService.updateDispenseStatusSummarized(dispenseIdList, busNo);
return R.ok("盘点成功");
}
return R.fail("未找到对应库存数据");
=======
for (OrgDeviceSummaryParam orgDeviceSummaryParam : orgDeviceSummaryParamList) { for (OrgDeviceSummaryParam orgDeviceSummaryParam : orgDeviceSummaryParamList) {
// 汇总单据号 // 汇总单据号
@@ -424,8 +246,8 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
} }
} else { } else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量) // 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = BigDecimal quantity
inventoryItem.getQuantity().subtract(partPercent.multiply(stockTakeQuantity)); = inventoryItem.getQuantity().subtract(partPercent.multiply(stockTakeQuantity));
// 库存数量判定 // 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) { if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足 // 库存数量不足
@@ -452,7 +274,6 @@ public class OrgDeviceStockTakeAppServiceImpl implements IOrgDeviceStockTakeAppS
return R.fail("未查询到" + orgDeviceSummaryParam.getName() + "对应库存数据"); return R.fail("未查询到" + orgDeviceSummaryParam.getName() + "对应库存数据");
} }
return R.ok("盘点成功"); return R.ok("盘点成功");
>>>>>>> v1.3
} }
} }

View File

@@ -88,15 +88,6 @@ public class ATDManageController {
/** /**
* 住院患者待处理信息列表 * 住院患者待处理信息列表
<<<<<<< HEAD
*
* @param encounterId 住院id
* @return 待处理信息列表
*/
@GetMapping(value = "/patient-pending")
public R<?> getInPatientPendingList(Long encounterId) {
return atdManageAppService.getInPatientPendingList(encounterId);
=======
* *
* @param inpatientAdviceParam 查询条件 * @param inpatientAdviceParam 查询条件
* @param pageNo 当前页码 * @param pageNo 当前页码
@@ -108,7 +99,6 @@ public class ATDManageController {
@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 atdManageAppService.getInPatientPendingList(inpatientAdviceParam, pageNo, pageSize); return atdManageAppService.getInPatientPendingList(inpatientAdviceParam, pageNo, pageSize);
>>>>>>> v1.3
} }
/** /**
@@ -125,11 +115,7 @@ public class ATDManageController {
/** /**
* 转科 * 转科
* *
<<<<<<< HEAD
* @param encounterId 住院id
=======
* @param encounterId 住院患者id * @param encounterId 住院患者id
>>>>>>> v1.3
* @return 结果 * @return 结果
*/ */
@PutMapping(value = "/transfer-department") @PutMapping(value = "/transfer-department")
@@ -140,19 +126,13 @@ public class ATDManageController {
/** /**
* 出院 * 出院
* *
<<<<<<< HEAD
* @param encounterId 住院id
=======
* @param encounterId 住院患者id * @param encounterId 住院患者id
>>>>>>> v1.3
* @return 结果 * @return 结果
*/ */
@PutMapping(value = "/hospital-discharge") @PutMapping(value = "/hospital-discharge")
public R<?> hospitalDischarge(Long encounterId) { public R<?> hospitalDischarge(Long encounterId) {
return atdManageAppService.hospitalDischarge(encounterId); return atdManageAppService.hospitalDischarge(encounterId);
} }
<<<<<<< HEAD
=======
/** /**
* 清床 * 清床
@@ -170,7 +150,8 @@ public class ATDManageController {
* *
* @param encounterId 诊断id * @param encounterId 诊断id
* @return EncounterAccountDto 诊断账户金额 * @return EncounterAccountDto 诊断账户金额
**/ *
*/
@GetMapping(value = "/get-amount") @GetMapping(value = "/get-amount")
public R<?> getAmount(Long encounterId) { public R<?> getAmount(Long encounterId) {
return atdManageAppService.getAmount(encounterId); return atdManageAppService.getAmount(encounterId);
@@ -181,10 +162,10 @@ public class ATDManageController {
* *
* @param encounterId 诊断id * @param encounterId 诊断id
* @return PendingMedicationDto 待配/退药 * @return PendingMedicationDto 待配/退药
**/ *
*/
@GetMapping(value = "/get-dr-medication") @GetMapping(value = "/get-dr-medication")
public R<?> getPendingMedication(Long encounterId) { public R<?> getPendingMedication(Long encounterId) {
return atdManageAppService.getPendingMedication(encounterId); return atdManageAppService.getPendingMedication(encounterId);
} }
>>>>>>> v1.3
} }

View File

@@ -31,26 +31,6 @@ public class MedicineSummaryController {
public IMedicineSummaryAppService medicineSummaryAppService; public IMedicineSummaryAppService medicineSummaryAppService;
/** /**
<<<<<<< HEAD
* 查询发药单信息
*
* @param dispenseFormSearchParam 查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求
* @return 发药单信息
*/
@GetMapping(value = "/dispensing-form")
public R<?> getMedicineDispenseFormPage(DispenseFormSearchParam dispenseFormSearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return medicineSummaryAppService.getMedicineDispenseFormPage(dispenseFormSearchParam, pageNo, pageSize,
request);
}
/**
* 查询药品汇总单
=======
* 药品汇总单初始化 * 药品汇总单初始化
* *
* @return 初始化信息 * @return 初始化信息
@@ -62,32 +42,10 @@ public class MedicineSummaryController {
/** /**
* 查询发药单信息 * 查询发药单信息
>>>>>>> v1.3
* *
* @param dispenseFormSearchParam 查询条件 * @param dispenseFormSearchParam 查询条件
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
<<<<<<< HEAD
* @param searchKey 模糊查询关键字
* @param request 请求
* @return 药品汇总单
*/
@GetMapping(value = "/summary-form")
public R<?> getMedicineSummaryFormPage(DispenseFormSearchParam dispenseFormSearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, String searchKey,
HttpServletRequest request) {
return medicineSummaryAppService.getMedicineSummaryFormPage(dispenseFormSearchParam, pageNo, pageSize,
searchKey, request);
}
/**
* 查询药品汇总单详情
*
* @param summaryNo 汇总单号
* @return 药品汇总单详情
*/
=======
* @param request 请求 * @param request 请求
* @return 发药单信息 * @return 发药单信息
*/ */
@@ -124,7 +82,6 @@ public class MedicineSummaryController {
* @param summaryNo 汇总单号 * @param summaryNo 汇总单号
* @return 药品汇总单详情 * @return 药品汇总单详情
*/ */
>>>>>>> v1.3
@GetMapping(value = "/summary-form-detail") @GetMapping(value = "/summary-form-detail")
public R<?> getMedicineSummaryFormDetail(String summaryNo) { public R<?> getMedicineSummaryFormDetail(String summaryNo) {
return medicineSummaryAppService.getMedicineSummaryFormDetail(summaryNo); return medicineSummaryAppService.getMedicineSummaryFormDetail(summaryNo);

View File

@@ -1,26 +1,5 @@
package com.openhis.web.inhospitalnursestation.controller; package com.openhis.web.inhospitalnursestation.controller;
<<<<<<< HEAD
import com.core.common.core.domain.R;
import com.openhis.web.regdoctorstation.dto.RegAdviceSaveParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author whm
* @date 2025/11/10 16:00
* @description 住院护士 患者划价、医嘱计费
*/
@RestController
@RequestMapping("/inhospitalnursestation/innursebilling")
@Slf4j
@AllArgsConstructor
public class NurseBillingController {
// TODO: Implement InNurseBillingController
=======
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@@ -44,70 +23,28 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* 住院护士 患者划价、医嘱计费 * 住院护士 患者划价、医嘱计费
*/ */
@RestController @RestController
@RequestMapping("/inhospitalnursestation/nursebilling") @RequestMapping("/inhospitalnursestation/nursebilling")
@Slf4j @Slf4j
@AllArgsConstructor @AllArgsConstructor
public class NurseBillingController { public class NurseBillingController {
@Resource @Resource
private INurseBillingAppService iNurseBillingAppService; private INurseBillingAppService iNurseBillingAppService;
>>>>>>> v1.3
/* /*
* 新增住院护士划价 * 新增住院护士划价
* @return * @return
*/ */
<<<<<<< HEAD
public R<?> addInNurseBilling(RegAdviceSaveParam regAdviceSaveParam) {
return R.ok();
}
/*
* 住院护士 划价列表 根据护士encounterId查询
* @return
*/
public R<?> getBillingListByEncounterId() {
return R.ok();
}
=======
@PostMapping("/add-billing") @PostMapping("/add-billing")
public R<?> addInNurseBilling(@RequestBody RegAdviceSaveParam regAdviceSaveParam) { public R<?> addInNurseBilling(@RequestBody RegAdviceSaveParam regAdviceSaveParam) {
return iNurseBillingAppService.addInNurseBilling(regAdviceSaveParam); return iNurseBillingAppService.addInNurseBilling(regAdviceSaveParam);
} }
>>>>>>> v1.3
/* /*
* 住院护士撤销划价 * 住院护士撤销划价
* @return * @return
*/ */
<<<<<<< HEAD
public R<?> deleteInNurseBilling() {
return R.ok();
}
/*
* 医嘱计费添加 诊疗 耗材
*/
public R<?> addOrderBilling() {
return R.ok();
}
/*
* 医嘱计费删除 诊疗 耗材
*/
public R<?> deleteOrderBilling() {
return R.ok();
}
/*
* 医嘱计费修改 诊疗 耗材
*/
public R<?> updateOrderBilling() {
return R.ok();
}
/*
根据医嘱id查询已计费的 耗材列表
* @return
*/
public R<?> getOrderBillingByRequestId() {
=======
@PostMapping("/del-billing") @PostMapping("/del-billing")
public R<?> deleteInNurseBilling(@RequestBody List<AdviceBatchOpParam> paramList) { public R<?> deleteInNurseBilling(@RequestBody List<AdviceBatchOpParam> paramList) {
return iNurseBillingAppService.deleteInNurseBilling(paramList); return iNurseBillingAppService.deleteInNurseBilling(paramList);
@@ -174,7 +111,6 @@ public class NurseBillingController {
* 医嘱计费修改 诊疗 耗材 * 医嘱计费修改 诊疗 耗材
*/ */
public R<?> updateOrderBilling() { public R<?> updateOrderBilling() {
>>>>>>> v1.3
return R.ok(); return R.ok();
} }

View File

@@ -1,16 +1,5 @@
package com.openhis.web.inhospitalnursestation.controller; package com.openhis.web.inhospitalnursestation.controller;
<<<<<<< HEAD
import com.core.common.core.domain.R;
import com.openhis.web.inhospitalnursestation.appservice.IOrgDeviceStockTakeAppService;
import com.openhis.web.inhospitalnursestation.dto.OrgDeviceSummaryParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
=======
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -24,7 +13,6 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List; import java.util.List;
>>>>>>> v1.3
/** /**
* 科室耗材盘点 * 科室耗材盘点
@@ -33,11 +21,7 @@ import java.util.List;
* @date 2025/11/05 * @date 2025/11/05
*/ */
@RestController @RestController
<<<<<<< HEAD
@RequestMapping("/nurse-station/orgdevice-stocktake")
=======
@RequestMapping("/nurse-station/org-device-stockTake") @RequestMapping("/nurse-station/org-device-stockTake")
>>>>>>> v1.3
@Slf4j @Slf4j
@AllArgsConstructor @AllArgsConstructor
public class OrgDeviceStockTakeController { public class OrgDeviceStockTakeController {
@@ -46,13 +30,6 @@ public class OrgDeviceStockTakeController {
private IOrgDeviceStockTakeAppService orgDeviceStockTakeService; private IOrgDeviceStockTakeAppService orgDeviceStockTakeService;
/** /**
<<<<<<< HEAD
* 查询科室耗材汇总
*
* @param orgDeviceSummaryParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
=======
* 页面初始化 * 页面初始化
* *
* @return 初始化信息 * @return 初始化信息
@@ -66,7 +43,6 @@ public class OrgDeviceStockTakeController {
* 查询科室耗材汇总 * 查询科室耗材汇总
* *
* @param orgDeviceSummaryParam 查询条件 * @param orgDeviceSummaryParam 查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
@@ -74,21 +50,12 @@ public class OrgDeviceStockTakeController {
* @return 科室耗材汇总单 * @return 科室耗材汇总单
*/ */
@GetMapping(value = "/summary-from") @GetMapping(value = "/summary-from")
<<<<<<< HEAD
public R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, String startTime,
String endTime, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, String searchKey,
HttpServletRequest request) {
return orgDeviceStockTakeService.getOrgDeviceSummaryFromPage(orgDeviceSummaryParam, startTime, endTime, pageNo,
pageSize, searchKey, request);
=======
public R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam, public R<?> getOrgDeviceSummaryFromPage(OrgDeviceSummaryParam orgDeviceSummaryParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, String searchKey, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, String searchKey,
HttpServletRequest request) { HttpServletRequest request) {
return orgDeviceStockTakeService.getOrgDeviceSummaryFromPage(orgDeviceSummaryParam, pageNo, pageSize, searchKey, return orgDeviceStockTakeService.getOrgDeviceSummaryFromPage(orgDeviceSummaryParam, pageNo, pageSize, searchKey,
request); request);
>>>>>>> v1.3
} }
/** /**
@@ -96,15 +63,9 @@ public class OrgDeviceStockTakeController {
* *
* @return 科室耗材汇总单 * @return 科室耗材汇总单
*/ */
<<<<<<< HEAD
@PutMapping(value = "/orgdevice-summary")
public R<?> orgDeviceSummary(OrgDeviceSummaryParam orgDeviceSummaryParam) {
return orgDeviceStockTakeService.orgDeviceSummary(orgDeviceSummaryParam);
=======
@PutMapping(value = "/org-device-summary") @PutMapping(value = "/org-device-summary")
public R<?> orgDeviceSummary(@RequestBody List<OrgDeviceSummaryParam> orgDeviceSummaryParamList) { public R<?> orgDeviceSummary(@RequestBody List<OrgDeviceSummaryParam> orgDeviceSummaryParamList) {
return orgDeviceStockTakeService.orgDeviceSummary(orgDeviceSummaryParamList); return orgDeviceStockTakeService.orgDeviceSummary(orgDeviceSummaryParamList);
>>>>>>> v1.3
} }
} }

View File

@@ -21,38 +21,52 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class AdviceExecuteDetailParam { public class AdviceExecuteDetailParam {
/** 医嘱请求id */ /**
* 医嘱请求id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long requestId; private Long requestId;
/** 就诊Id */ /**
* 就诊Id
*/
private Long encounterId; private Long encounterId;
/** 患者Id */ /**
* 患者Id
*/
private Long patientId; private Long patientId;
/** 账号id */ /**
* 账号id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long accountId; private Long accountId;
/** 执行id */ /**
* 执行id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long procedureId; private Long procedureId;
/** 医嘱类型 */ /**
* 医嘱类型
*/
private Integer therapyEnum; private Integer therapyEnum;
/** 医嘱请求所在表 */ /**
* 医嘱请求所在表
*/
private String adviceTable; private String adviceTable;
/** 组号 */ /**
* 组号
*/
private Long groupId; private Long groupId;
<<<<<<< HEAD /**
/** 执行时间点集合 */ * 预计执行时间点集合
======= */
/** 预计执行时间点集合 */
>>>>>>> v1.3
private List<String> executeTimes; private List<String> executeTimes;
} }

View File

@@ -22,33 +22,46 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class DispenseFormSearchParam implements Serializable { public class DispenseFormSearchParam implements Serializable {
/** 汇总状态 */ /**
* 汇总状态
*/
private Integer SummaryStatus; private Integer SummaryStatus;
/** 中药标识 */ /**
* 中药标识
*/
private Integer tcmFlag; private Integer tcmFlag;
/** 医嘱类型 */ /**
* 医嘱类型
*/
private Integer therapyEnum; private Integer therapyEnum;
/** 就诊ids */ /**
* 就诊ids
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private String encounterIds; private String encounterIds;
/** 发放药房id */ /**
* 发放药房id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long locationId; private Long locationId;
/** 执行时间 */ /**
* 执行时间
*/
private Date exeTime; private Date exeTime;
/** 汇总人id */ /**
* 汇总人id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long applicantId; private Long applicantId;
<<<<<<< HEAD
=======
/** 发放状态 */ /**
* 发放状态
*/
private Integer statusEnum; private Integer statusEnum;
>>>>>>> v1.3
} }

View File

@@ -47,7 +47,9 @@ public class MedicineSummaryInfoDto {
*/ */
private String totalVolume; private String totalVolume;
/** 拆零比 */ /**
* 拆零比
*/
private BigDecimal partPercent; private BigDecimal partPercent;
/** /**
@@ -56,8 +58,6 @@ public class MedicineSummaryInfoDto {
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
<<<<<<< HEAD
=======
/** /**
* 药品类型 * 药品类型
@@ -70,5 +70,4 @@ public class MedicineSummaryInfoDto {
* 生产厂家 * 生产厂家
*/ */
private String manufacturerText; private String manufacturerText;
>>>>>>> v1.3
} }

View File

@@ -18,57 +18,67 @@ import java.util.List;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class OrgDeviceSummaryParam { public class OrgDeviceSummaryParam {
<<<<<<< HEAD
======= /**
/** 发放地点 */ * 发放地点
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long sourceLocationId; private Long sourceLocationId;
>>>>>>> v1.3
/** 项目id */ /**
* 项目id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long itemId; private Long itemId;
<<<<<<< HEAD /**
======= * 器材名称
/** 器材名称 */ */
private String name; private String name;
>>>>>>> v1.3 /**
/** 库存id */ * 库存id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long inventoryItemId; private Long inventoryItemId;
/** 发放数量 */ /**
* 发放数量
*/
private BigDecimal dispenseQuantity; private BigDecimal dispenseQuantity;
/** 盈亏数量 */ /**
* 盈亏数量
*/
private BigDecimal stockTakeQuantity; private BigDecimal stockTakeQuantity;
/** 批号 */ /**
* 批号
*/
private String lotNumber; private String lotNumber;
<<<<<<< HEAD /**
/** 发放地点 */ * 使用单位
@JsonSerialize(using = ToStringSerializer.class) */
private Long sourceLocationId;
=======
>>>>>>> v1.3
/** 使用单位 */
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String useUnitCode; private String useUnitCode;
private String useUnitCode_dictText; private String useUnitCode_dictText;
/** 最小单位 */ /**
* 最小单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String minUnitCode; private String minUnitCode;
private String minUnitCode_dictText; private String minUnitCode_dictText;
/** 拆零比 */ /**
* 拆零比
*/
private BigDecimal partPercent; private BigDecimal partPercent;
/** 发放id列表 */ /**
* 发放id列表
*/
private List<Long> dispenseIdList; private List<Long> dispenseIdList;
} }

View File

@@ -48,21 +48,13 @@ public interface MedicineSummaryAppMapper {
* @param page 分页信息 * @param page 分页信息
* @param queryWrapper 查询条件 * @param queryWrapper 查询条件
* @param completed 发药状态:已完成 * @param completed 发药状态:已完成
<<<<<<< HEAD
* @param inProgress 发药状态:待发药
=======
* @param preparation 发药状态:待配药 * @param preparation 发药状态:待配药
>>>>>>> v1.3
* @param summaryDispense 单据类型:汇总发药 * @param summaryDispense 单据类型:汇总发药
* @return 汇总单列表 * @return 汇总单列表
*/ */
Page<MedicineSummaryFormDto> selectMedicineSummaryFormPage(@Param("page") Page<MedicineSummaryFormDto> page, Page<MedicineSummaryFormDto> selectMedicineSummaryFormPage(@Param("page") Page<MedicineSummaryFormDto> page,
@Param(Constants.WRAPPER) QueryWrapper<DispenseFormSearchParam> queryWrapper, @Param(Constants.WRAPPER) QueryWrapper<DispenseFormSearchParam> queryWrapper,
<<<<<<< HEAD
@Param("completed") Integer completed, @Param("inProgress") Integer inProgress,
=======
@Param("completed") Integer completed, @Param("preparation") Integer preparation, @Param("completed") Integer completed, @Param("preparation") Integer preparation,
>>>>>>> v1.3
@Param("summaryDispense") Integer summaryDispense); @Param("summaryDispense") Integer summaryDispense);
/** /**

View File

@@ -1,11 +1,5 @@
package com.openhis.web.inhospitalnursestation.mapper; package com.openhis.web.inhospitalnursestation.mapper;
<<<<<<< HEAD
import org.springframework.stereotype.Repository;
@Repository
public interface NurseBillingAppMapper {
=======
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -52,5 +46,4 @@ public interface NurseBillingAppMapper {
@Param("billable") Integer billable, @Param("billed") Integer billed, @Param("refunded") Integer refunded, @Param("billable") Integer billable, @Param("billed") Integer billed, @Param("refunded") Integer refunded,
@Param("imp") Integer imp, @Param("generateSourceEnum") Integer generateSourceEnum, @Param("imp") Integer imp, @Param("generateSourceEnum") Integer generateSourceEnum,
@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
>>>>>>> v1.3
} }

View File

@@ -18,11 +18,7 @@ public interface OrgDeviceStockTakeAppMapper {
* @return 科室耗材信息 * @return 科室耗材信息
*/ */
Page<OrgDeviceDto> selectOrgDeviceInfo(@Param("page") Page<OrgDeviceDto> page, Page<OrgDeviceDto> selectOrgDeviceInfo(@Param("page") Page<OrgDeviceDto> page,
<<<<<<< HEAD
@Param(Constants.WRAPPER) QueryWrapper<OrgDeviceDto> queryWrapper);
=======
@Param(Constants.WRAPPER) QueryWrapper<OrgDeviceDto> queryWrapper, @Param("imp") Integer imp, @Param(Constants.WRAPPER) QueryWrapper<OrgDeviceDto> queryWrapper, @Param("imp") Integer imp,
@Param("requestStatus") Integer requestStatus, @Param("dispenseStatus") Integer dispenseStatus, @Param("requestStatus") Integer requestStatus, @Param("dispenseStatus") Integer dispenseStatus,
@Param("chargeItemStatus") Integer chargeItemStatus); @Param("chargeItemStatus") Integer chargeItemStatus);
>>>>>>> v1.3
} }

View File

@@ -100,8 +100,6 @@ public interface ILossReportFormAppService {
*/ */
R<?> getMonthlySettlementDetail(Long locationId, String startTime, String endTime, Integer pageNo, R<?> getMonthlySettlementDetail(Long locationId, String startTime, String endTime, Integer pageNo,
Integer pageSize); Integer pageSize);
<<<<<<< HEAD
=======
/** /**
* 报损单据明细导出 * 报损单据明细导出
@@ -118,5 +116,4 @@ public interface ILossReportFormAppService {
* @return 报损单据详情(DTO : LossReceiptDetailDto) * @return 报损单据详情(DTO : LossReceiptDetailDto)
*/ */
R<List<LossReceiptDetailDto>> getLossDetail(String busNo); R<List<LossReceiptDetailDto>> getLossDetail(String busNo);
>>>>>>> v1.3
} }

View File

@@ -3,11 +3,6 @@ package com.openhis.web.inventorymanage.appservice;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
import com.core.common.core.domain.R;
import com.openhis.web.inventorymanage.dto.ProductDetailSearchParam;
=======
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.openhis.web.inventorymanage.dto.ProductDetailPageDto; import com.openhis.web.inventorymanage.dto.ProductDetailPageDto;
@@ -15,7 +10,6 @@ import com.openhis.web.inventorymanage.dto.ProductDetailSearchParam;
import java.util.List; import java.util.List;
>>>>>>> v1.3
/** /**
* 库存商品明细 appService * 库存商品明细 appService
* *
@@ -41,30 +35,6 @@ public interface IProductDetailAppService {
* @param request 请求数据 * @param request 请求数据
* @return 库存商品明细分页列表 * @return 库存商品明细分页列表
*/ */
<<<<<<< HEAD
R<?> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam, Integer pageNo, Integer pageSize,
String searchKey, HttpServletRequest request);
/**
* 操作:停供
*
* @param inventoryId 库存项目管理ID
* @return 操作结果
*/
R<?> stopSupplyById(Long inventoryId);
/**
* 操作:取消停供
*
* @param inventoryId 库存项目管理ID
* @return 操作结果
*/
R<?> cancelSupplyById(Long inventoryId);
/**
* 库存明细表导出
=======
R<Page<ProductDetailPageDto>> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam, R<Page<ProductDetailPageDto>> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam,
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request); Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
@@ -73,22 +43,12 @@ public interface IProductDetailAppService {
/** /**
* 查询库存备份商品明细分页列表 * 查询库存备份商品明细分页列表
>>>>>>> v1.3
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
<<<<<<< HEAD
* @param response 响应数据
*/
void makeExcelFile(ProductDetailSearchParam productDetailSearchParam, Integer pageNo, Integer pageSize,
String searchKey, HttpServletRequest request, HttpServletResponse response);
/**
* 查询库存商品明细统计数据
=======
* @return 库存备份商品明细 * @return 库存备份商品明细
*/ */
R<Page<ProductDetailPageDto>> getProductDetailBackupPage(ProductDetailSearchParam productDetailSearchParam, R<Page<ProductDetailPageDto>> getProductDetailBackupPage(ProductDetailSearchParam productDetailSearchParam,
@@ -96,16 +56,10 @@ public interface IProductDetailAppService {
/** /**
* 查询库存商品备份明细统计数据 * 查询库存商品备份明细统计数据
>>>>>>> v1.3
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
<<<<<<< HEAD
* @return 库存商品明细统计数据
*/
R<?> getProductDetailStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey, HttpServletRequest request);
=======
* @return 库存商品备份明细统计数据 * @return 库存商品备份明细统计数据
*/ */
R<?> getProductDetailBackupStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey, R<?> getProductDetailBackupStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey,
@@ -139,5 +93,4 @@ public interface IProductDetailAppService {
HttpServletResponse response); HttpServletResponse response);
void exportExcel(ProductDetailSearchParam productDetailSearchParam, Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request, HttpServletResponse response); void exportExcel(ProductDetailSearchParam productDetailSearchParam, Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request, HttpServletResponse response);
>>>>>>> v1.3
} }

View File

@@ -25,11 +25,7 @@ import com.openhis.administration.service.IChargeItemDefDetailService;
import com.openhis.administration.service.IChargeItemDefinitionService; import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.CommonConstants;
import com.openhis.common.enums.ConditionCode; import com.openhis.common.enums.ConditionCode;
<<<<<<< HEAD
import com.openhis.common.enums.DelFlag;
=======
import com.core.common.enums.DelFlag; import com.core.common.enums.DelFlag;
>>>>>>> v1.3
import com.openhis.common.enums.SupplyStatus; import com.openhis.common.enums.SupplyStatus;
import com.openhis.common.enums.SupplyType; import com.openhis.common.enums.SupplyType;
import com.openhis.common.utils.EnumUtils; import com.openhis.common.utils.EnumUtils;
@@ -49,9 +45,11 @@ import com.openhis.web.inventorymanage.mapper.InventoryAdjustPriceMapper;
* @Author raymond * @Author raymond
* @Date 2025/10/23 14:57 * @Date 2025/10/23 14:57
* @Version 1.0 * @Version 1.0
**/ *
*/
@Service @Service
public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceService { public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceService {
@Resource @Resource
private IChargeItemDefinitionService chargeItemDefinitionService; private IChargeItemDefinitionService chargeItemDefinitionService;
@Resource @Resource
@@ -70,8 +68,8 @@ public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceSe
HashSet<String> searchFields = new HashSet<>(); HashSet<String> searchFields = new HashSet<>();
searchFields.add(CommonConstants.FieldName.SupplyBusNo); searchFields.add(CommonConstants.FieldName.SupplyBusNo);
QueryWrapper<ReceiptApprovalSearchParam> queryWrapper = QueryWrapper<ReceiptApprovalSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(adjustPriceManagerSearchParam, searchKey, searchFields, request); = HisQueryUtils.buildQueryWrapper(adjustPriceManagerSearchParam, searchKey, searchFields, request);
// 查询单据分页列表 // 查询单据分页列表
Page<ChangePricePageDto> receiptPage = inventoryAdjustPriceMapper.searchPageByExamine( Page<ChangePricePageDto> receiptPage = inventoryAdjustPriceMapper.searchPageByExamine(
new Page<>(pageNo, pageSize), queryWrapper, SupplyStatus.APPROVAL.getValue(), SupplyStatus.AGREE.getValue(), new Page<>(pageNo, pageSize), queryWrapper, SupplyStatus.APPROVAL.getValue(), SupplyStatus.AGREE.getValue(),
@@ -89,8 +87,8 @@ public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceSe
@Override @Override
public R<?> updateExamineByRejected(String busNo) { public R<?> updateExamineByRejected(String busNo) {
List<ChangePriceRecord> changePriceRecordList = List<ChangePriceRecord> changePriceRecordList
this.changePriceRecordService.searchChangePriceDataForBusNo(busNo); = this.changePriceRecordService.searchChangePriceDataForBusNo(busNo);
if (changePriceRecordList.isEmpty()) { if (changePriceRecordList.isEmpty()) {
return R.fail(); return R.fail();
} }
@@ -119,8 +117,8 @@ public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceSe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public R<?> updateExamineByApproved(String busNo) { public R<?> updateExamineByApproved(String busNo) {
List<ChangePriceRecord> changePriceRecordList = List<ChangePriceRecord> changePriceRecordList
this.changePriceRecordService.searchChangePriceDataForBusNo(busNo); = this.changePriceRecordService.searchChangePriceDataForBusNo(busNo);
if (changePriceRecordList.isEmpty()) { if (changePriceRecordList.isEmpty()) {
return R.fail(); return R.fail();
} }
@@ -141,10 +139,11 @@ public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceSe
* @Author raymond * @Author raymond
* @Date 22:16 2025/10/18 * @Date 22:16 2025/10/18
* @return com.core.common.core.domain.R<?> * @return com.core.common.core.domain.R<?>
**/ *
*/
public void executeBusiness(String busNo) { public void executeBusiness(String busNo) {
List<ChangePriceDataDto> changePriceDataDtoList = List<ChangePriceDataDto> changePriceDataDtoList
this.changePriceRecordService.searchChangePriceRecordDataByBusNo(busNo, SupplyStatus.APPROVAL.getValue()); = this.changePriceRecordService.searchChangePriceRecordDataByBusNo(busNo, SupplyStatus.APPROVAL.getValue());
// 零售价 // 零售价
List<ChargeItemDefDetail> itemDefDetailRetailList = new LinkedList<>(); List<ChargeItemDefDetail> itemDefDetailRetailList = new LinkedList<>();
// 进货价 // 进货价
@@ -157,12 +156,12 @@ public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceSe
chargeItemDefinition.setPrice(data.getNewRetailPrice()); chargeItemDefinition.setPrice(data.getNewRetailPrice());
this.chargeItemDefinitionService.updateById(chargeItemDefinition); this.chargeItemDefinitionService.updateById(chargeItemDefinition);
// 零售价 // 零售价
List<ChargeItemDefDetail> defDetailRetailList = List<ChargeItemDefDetail> defDetailRetailList
this.chargeItemDefDetailService.searchChargeItemDefDetailByIds(chargeItemDefinition.getId(), = this.chargeItemDefDetailService.searchChargeItemDefDetailByIds(chargeItemDefinition.getId(),
ConditionCode.LOT_NUMBER_PRICE.getCode(), data.getLotNumber()); ConditionCode.LOT_NUMBER_PRICE.getCode(), data.getLotNumber());
// 进货价 // 进货价
List<ChargeItemDefDetail> defDetailBuyingList = List<ChargeItemDefDetail> defDetailBuyingList
this.chargeItemDefDetailService.searchChargeItemDefDetailByIds(chargeItemDefinition.getId(), = this.chargeItemDefDetailService.searchChargeItemDefDetailByIds(chargeItemDefinition.getId(),
ConditionCode.LOT_NUMBER_COST.getCode(), data.getLotNumber()); ConditionCode.LOT_NUMBER_COST.getCode(), data.getLotNumber());
// 采购价 // 采购价
List<ChargeItemDefDetail> purchasePriceList = this.chargeItemDefDetailService List<ChargeItemDefDetail> purchasePriceList = this.chargeItemDefDetailService

View File

@@ -10,12 +10,8 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
import com.core.common.utils.poi.ExcelUtil;
=======
import com.core.common.utils.*; import com.core.common.utils.*;
import com.openhis.web.inventorymanage.dto.ProductTransferPageDto; import com.openhis.web.inventorymanage.dto.ProductTransferPageDto;
>>>>>>> v1.3
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -25,14 +21,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
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;
<<<<<<< HEAD
import com.core.common.utils.DateUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.SecurityUtils;
=======
import com.core.common.exception.NonCaptureException; import com.core.common.exception.NonCaptureException;
import com.core.common.utils.poi.ExcelUtil; import com.core.common.utils.poi.ExcelUtil;
>>>>>>> v1.3
import com.core.web.util.TenantOptionUtil; import com.core.web.util.TenantOptionUtil;
import com.openhis.administration.domain.ChargeItemDefDetail; import com.openhis.administration.domain.ChargeItemDefDetail;
import com.openhis.administration.service.IChargeItemDefDetailService; import com.openhis.administration.service.IChargeItemDefDetailService;
@@ -47,10 +37,6 @@ import com.openhis.web.inventorymanage.dto.ProductDetailInitDto;
import com.openhis.web.inventorymanage.dto.ProductDetailPageDto; import com.openhis.web.inventorymanage.dto.ProductDetailPageDto;
import com.openhis.web.inventorymanage.dto.ProductDetailSearchParam; import com.openhis.web.inventorymanage.dto.ProductDetailSearchParam;
import com.openhis.web.inventorymanage.mapper.ProductDetailAppMapper; import com.openhis.web.inventorymanage.mapper.ProductDetailAppMapper;
<<<<<<< HEAD
import com.openhis.web.reportmanage.utils.ExcelFillerUtil;
=======
>>>>>>> v1.3
import com.openhis.workflow.domain.InventoryItem; import com.openhis.workflow.domain.InventoryItem;
import com.openhis.workflow.mapper.InventoryItemMapper; import com.openhis.workflow.mapper.InventoryItemMapper;
@@ -97,19 +83,12 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
* @return 库存商品明细分页列表 * @return 库存商品明细分页列表
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam, Integer pageNo,
Integer pageSize, String searchKey, HttpServletRequest request) {
// 项目类型
Integer categoryCode = productDetailSearchParam.getCategoryCode();
=======
public R<Page<ProductDetailPageDto>> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam, public R<Page<ProductDetailPageDto>> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam,
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) { Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
// 药品类型 // 药品类型
List<String> medCategoryCodes = productDetailSearchParam.getMedCategoryCodes(); List<String> medCategoryCodes = productDetailSearchParam.getMedCategoryCodes();
// 药品类型 // 药品类型
List<String> devCategoryCodes = productDetailSearchParam.getDevCategoryCodes(); List<String> devCategoryCodes = productDetailSearchParam.getDevCategoryCodes();
>>>>>>> v1.3
// 库存是否为零 // 库存是否为零
Integer zeroFlag = productDetailSearchParam.getZeroFlag(); Integer zeroFlag = productDetailSearchParam.getZeroFlag();
// 过期天数 // 过期天数
@@ -118,38 +97,19 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
List<Long> locationIds = productDetailSearchParam.getLocationIds(); List<Long> locationIds = productDetailSearchParam.getLocationIds();
// 供应商 // 供应商
List<Long> supplierIds = productDetailSearchParam.getSupplierIds(); List<Long> supplierIds = productDetailSearchParam.getSupplierIds();
<<<<<<< HEAD
productDetailSearchParam.setCategoryCode(null).setZeroFlag(null).setRemainingDays(null).setLocationIds(null)
.setSupplierIds(null);
=======
productDetailSearchParam.setZeroFlag(null).setRemainingDays(null).setLocationIds(null).setSupplierIds(null) productDetailSearchParam.setZeroFlag(null).setRemainingDays(null).setLocationIds(null).setSupplierIds(null)
.setMedCategoryCodes(null).setDevCategoryCodes(null); .setMedCategoryCodes(null).setDevCategoryCodes(null);
>>>>>>> v1.3
// 构建查询条件 // 构建查询条件
QueryWrapper<ProductDetailSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper( QueryWrapper<ProductDetailSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(
productDetailSearchParam, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.ItemName, productDetailSearchParam, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.ItemName,
CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr)), CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr)),
request); request);
// 根据不同分类拼接查询条件 // 根据不同分类拼接查询条件
<<<<<<< HEAD
if (categoryCode != null) {
if (categoryCode.equals(ItemCategoryCode.CHINESE_PATENT_DRUG.getValue())
|| categoryCode.equals(ItemCategoryCode.WESTERN_MEDICINE.getValue())
|| categoryCode.equals(ItemCategoryCode.EXTERNALLY_PROCURED_DRUGS.getValue())
|| categoryCode.equals(ItemCategoryCode.CHINESE_HERBAL_MEDICINE.getValue())) {
queryWrapper.eq(CommonConstants.FieldName.ItemTable,
CommonConstants.TableName.MED_MEDICATION_DEFINITION);
queryWrapper.eq(CommonConstants.FieldName.MedCategoryCode, categoryCode.toString());
} else if (categoryCode.equals(ItemCategoryCode.DEVICE.getValue())) {
queryWrapper.eq(CommonConstants.FieldName.ItemTable, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
}
=======
if (medCategoryCodes != null && !medCategoryCodes.isEmpty()) { if (medCategoryCodes != null && !medCategoryCodes.isEmpty()) {
queryWrapper.in(CommonConstants.FieldName.MedCategoryCode, medCategoryCodes); queryWrapper.in(CommonConstants.FieldName.MedCategoryCode, medCategoryCodes);
} }
if (devCategoryCodes != null && !devCategoryCodes.isEmpty()) { if (devCategoryCodes != null && !devCategoryCodes.isEmpty()) {
queryWrapper.in(CommonConstants.FieldName.DevCategoryCode, devCategoryCodes); queryWrapper.in(CommonConstants.FieldName.DevCategoryCode, devCategoryCodes);
>>>>>>> v1.3
} }
// 库存是否为零 // 库存是否为零
if (zeroFlag != null) { if (zeroFlag != null) {
@@ -183,29 +143,25 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
// 批次售价需查询定价子表 // 批次售价需查询定价子表
if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) { if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) {
// 收集所有定价ID // 收集所有定价ID
List<Long> chargeItemDefIdList = List<Long> chargeItemDefIdList
productDetailList.stream().map(ProductDetailPageDto::getChargeItemDefId).filter(Objects::nonNull) = productDetailList.stream().map(ProductDetailPageDto::getChargeItemDefId).filter(Objects::nonNull)
.distinct().collect(Collectors.toList()); .distinct().collect(Collectors.toList());
// 查询批次售价信息 // 查询批次售价信息
if (!chargeItemDefIdList.isEmpty()) { if (!chargeItemDefIdList.isEmpty()) {
List<ChargeItemDefDetail> lotNumberPriceList = List<ChargeItemDefDetail> lotNumberPriceList
chargeItemDefDetailService.getLotNumberPriceByDefIds(chargeItemDefIdList); = chargeItemDefDetailService.getLotNumberPriceByDefIds(chargeItemDefIdList);
if (lotNumberPriceList != null && !lotNumberPriceList.isEmpty()) { if (lotNumberPriceList != null && !lotNumberPriceList.isEmpty()) {
// 创建批次号到售价的映射 // 创建批次号到售价的映射
Map<String, BigDecimal> lotPriceMap = Map<String, BigDecimal> lotPriceMap
lotNumberPriceList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getConditionValue, = lotNumberPriceList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getConditionValue,
ChargeItemDefDetail::getAmount, (existing, replacement) -> existing)); // 处理重复键的情况 ChargeItemDefDetail::getAmount, (existing, replacement) -> existing)); // 处理重复键的情况
// 更新原始列表中的售价 // 更新原始列表中的售价
for (ProductDetailPageDto productDetail : productDetailList) { for (ProductDetailPageDto productDetail : productDetailList) {
BigDecimal price = lotPriceMap.get(productDetail.getLotNumber()); BigDecimal price = lotPriceMap.get(productDetail.getLotNumber());
if (price != null) { if (price != null) {
<<<<<<< HEAD
productDetail.setTotalSalePrice(price);
=======
productDetail.setSalePrice(price); productDetail.setSalePrice(price);
>>>>>>> v1.3
} }
} }
} }
@@ -221,8 +177,8 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
EnumUtils.getInfoByValue(PublicationStatus.class, productDetailPageDto.getInventoryStatusEnum())); EnumUtils.getInfoByValue(PublicationStatus.class, productDetailPageDto.getInventoryStatusEnum()));
// 计算包装单位数量 // 计算包装单位数量
BigDecimal[] results = BigDecimal[] results
productDetailPageDto.getQuantity().divideAndRemainder(productDetailPageDto.getPartPercent()); = productDetailPageDto.getQuantity().divideAndRemainder(productDetailPageDto.getPartPercent());
// 整数 // 整数
productDetailPageDto.setNumber(results[0]); productDetailPageDto.setNumber(results[0]);
// 余数 // 余数
@@ -250,8 +206,6 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
} }
/** /**
<<<<<<< HEAD
=======
* 查询库存备份商品明细分页列表 * 查询库存备份商品明细分页列表
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
@@ -311,8 +265,8 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
queryWrapper.le(CommonConstants.FieldName.RemainingDays, remainingDays); queryWrapper.le(CommonConstants.FieldName.RemainingDays, remainingDays);
} }
// 查询库存商品备份明细分页列表 // 查询库存商品备份明细分页列表
Page<ProductDetailPageDto> productDetailsBackupPage = Page<ProductDetailPageDto> productDetailsBackupPage
productDetailsMapper.selectProductDetailsBackupPage(new Page<>(pageNo, pageSize), queryWrapper); = productDetailsMapper.selectProductDetailsBackupPage(new Page<>(pageNo, pageSize), queryWrapper);
productDetailsBackupPage.getRecords().forEach(e -> { productDetailsBackupPage.getRecords().forEach(e -> {
// 医保等级 // 医保等级
e.setChrgitmLv_enumText(EnumUtils.getInfoByValue(YbChrgitmLv.class, e.getChrgitmLv())); e.setChrgitmLv_enumText(EnumUtils.getInfoByValue(YbChrgitmLv.class, e.getChrgitmLv()));
@@ -324,7 +278,6 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
} }
/** /**
>>>>>>> v1.3
* 查询库存商品明细统计数据 * 查询库存商品明细统计数据
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
@@ -336,17 +289,10 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
public R<?> getProductDetailStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey, public R<?> getProductDetailStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey,
HttpServletRequest request) { HttpServletRequest request) {
// 查询库存商品明细分页列表 // 查询库存商品明细分页列表
<<<<<<< HEAD Page<ProductDetailPageDto> productDetailPage
R<?> result = this.getProductDetailPage(productDetailSearchParam, 1, 30000, searchKey, request); = this.getProductDetailPage(productDetailSearchParam, 1, 30000, searchKey, request).getData();
ProductDetailPageDto productDetail = new ProductDetailPageDto();
if (result != null && result.getData() != null) {
Page<ProductDetailPageDto> productDetailPage = (Page<ProductDetailPageDto>)result.getData();
=======
Page<ProductDetailPageDto> productDetailPage =
this.getProductDetailPage(productDetailSearchParam, 1, 30000, searchKey, request).getData();
ProductDetailPageDto productDetail = new ProductDetailPageDto(); ProductDetailPageDto productDetail = new ProductDetailPageDto();
if (productDetailPage != null && productDetailPage.getTotal() > 0) { if (productDetailPage != null && productDetailPage.getTotal() > 0) {
>>>>>>> v1.3
List<ProductDetailPageDto> productDetailList = productDetailPage.getRecords(); List<ProductDetailPageDto> productDetailList = productDetailPage.getRecords();
// 统计库房总金额 // 统计库房总金额
productDetail productDetail
@@ -359,15 +305,6 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
} }
/** /**
<<<<<<< HEAD
* 操作:停供
*
* @param inventoryId 库存项目管理ID
* @return 操作结果
*/
@Override
public R<?> stopSupplyById(Long inventoryId) {
=======
* 查询库存商品备份明细统计数据 * 查询库存商品备份明细统计数据
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
@@ -379,8 +316,8 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
public R<?> getProductDetailBackupStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey, public R<?> getProductDetailBackupStatistics(ProductDetailSearchParam productDetailSearchParam, String searchKey,
HttpServletRequest request) { HttpServletRequest request) {
// 查询库存商品备份明细分页列表 // 查询库存商品备份明细分页列表
Page<ProductDetailPageDto> productDetailPage = Page<ProductDetailPageDto> productDetailPage
this.getProductDetailBackupPage(productDetailSearchParam, 1, 30000, searchKey, request).getData(); = this.getProductDetailBackupPage(productDetailSearchParam, 1, 30000, searchKey, request).getData();
ProductDetailPageDto productDetailBackup = new ProductDetailPageDto(); ProductDetailPageDto productDetailBackup = new ProductDetailPageDto();
if (productDetailPage != null && productDetailPage.getTotal() > 0) { if (productDetailPage != null && productDetailPage.getTotal() > 0) {
List<ProductDetailPageDto> productDetailBackupList = productDetailPage.getRecords(); List<ProductDetailPageDto> productDetailBackupList = productDetailPage.getRecords();
@@ -403,7 +340,6 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
*/ */
@Override @Override
public R<?> stopSupplyById(List<Long> inventoryIdList) { public R<?> stopSupplyById(List<Long> inventoryIdList) {
>>>>>>> v1.3
// 获取当前时间 // 获取当前时间
Date now = DateUtils.getNowDate(); Date now = DateUtils.getNowDate();
@@ -412,11 +348,7 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
// 停供按钮压下,更新库存项目管理表的库存状态:已停供 // 停供按钮压下,更新库存项目管理表的库存状态:已停供
int updateCount = baseMapper.update(null, int updateCount = baseMapper.update(null,
<<<<<<< HEAD
new LambdaUpdateWrapper<InventoryItem>().eq(InventoryItem::getId, inventoryId)
=======
new LambdaUpdateWrapper<InventoryItem>().in(InventoryItem::getId, inventoryIdList) new LambdaUpdateWrapper<InventoryItem>().in(InventoryItem::getId, inventoryIdList)
>>>>>>> v1.3
.set(InventoryItem::getUpdateTime, now).set(InventoryItem::getUpdateBy, loginUser.getUserId()) .set(InventoryItem::getUpdateTime, now).set(InventoryItem::getUpdateBy, loginUser.getUserId())
.set(InventoryItem::getInventoryStatusEnum, PublicationStatus.RETIRED.getValue())); .set(InventoryItem::getInventoryStatusEnum, PublicationStatus.RETIRED.getValue()));
@@ -427,19 +359,11 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
/** /**
* 操作:取消停供 * 操作:取消停供
* *
<<<<<<< HEAD
* @param inventoryId 库存项目管理ID
* @return 操作结果
*/
@Override
public R<?> cancelSupplyById(Long inventoryId) {
=======
* @param inventoryIdList 库存项目管理ID * @param inventoryIdList 库存项目管理ID
* @return 操作结果 * @return 操作结果
*/ */
@Override @Override
public R<?> cancelSupplyById(List<Long> inventoryIdList) { public R<?> cancelSupplyById(List<Long> inventoryIdList) {
>>>>>>> v1.3
// 获取当前时间 // 获取当前时间
Date now = DateUtils.getNowDate(); Date now = DateUtils.getNowDate();
@@ -448,11 +372,7 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
// 取消停供按钮压下,更新库存项目管理表的库存状态:未停供 // 取消停供按钮压下,更新库存项目管理表的库存状态:未停供
int updateCount = baseMapper.update(null, int updateCount = baseMapper.update(null,
<<<<<<< HEAD
new LambdaUpdateWrapper<InventoryItem>().eq(InventoryItem::getId, inventoryId)
=======
new LambdaUpdateWrapper<InventoryItem>().in(InventoryItem::getId, inventoryIdList) new LambdaUpdateWrapper<InventoryItem>().in(InventoryItem::getId, inventoryIdList)
>>>>>>> v1.3
.set(InventoryItem::getUpdateTime, now).set(InventoryItem::getUpdateBy, loginUser.getUserId()) .set(InventoryItem::getUpdateTime, now).set(InventoryItem::getUpdateBy, loginUser.getUserId())
.set(InventoryItem::getInventoryStatusEnum, PublicationStatus.ACTIVE.getValue())); .set(InventoryItem::getInventoryStatusEnum, PublicationStatus.ACTIVE.getValue()));
@@ -464,34 +384,15 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
* 库存明细表导出 * 库存明细表导出
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
<<<<<<< HEAD
* @param pageNo 当前页码
* @param pageSize 查询条数
=======
>>>>>>> v1.3
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
* @param response 响应数据 * @param response 响应数据
*/ */
<<<<<<< HEAD
public void makeExcelFile(ProductDetailSearchParam productDetailSearchParam, Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request, HttpServletResponse response) {
R<?> result = this.getProductDetailPageX(productDetailSearchParam, 1, 10000, searchKey, request);
if (result != null && result.getData() != null) {
Page<ProductDetailPageDto> pageData = (Page)result.getData();
List<ProductDetailPageDto> dataList = pageData.getRecords();
try {
for(ProductDetailPageDto productDetailPageDto : dataList) {
// 获取单位
String unitCode = productDetailPageDto.getUnitCodeDictText();
String minUnitCode = productDetailPageDto.getMinUnitCodeDictText();
//获取数量
=======
@Override @Override
public void makeExcelFile(ProductDetailSearchParam productDetailSearchParam, String searchKey, public void makeExcelFile(ProductDetailSearchParam productDetailSearchParam, String searchKey,
HttpServletRequest request, HttpServletResponse response) { HttpServletRequest request, HttpServletResponse response) {
R<List<ProductDetailPageDto>> result = R<List<ProductDetailPageDto>> result
this.getProductDetailPageAndTranslateField(productDetailSearchParam, searchKey, request); = this.getProductDetailPageAndTranslateField(productDetailSearchParam, searchKey, request);
if (result.getData() != null) { if (result.getData() != null) {
List<ProductDetailPageDto> dataList = result.getData(); List<ProductDetailPageDto> dataList = result.getData();
try { try {
@@ -500,20 +401,10 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
String unitCode = productDetailPageDto.getUnitCodeDictText(); String unitCode = productDetailPageDto.getUnitCodeDictText();
String minUnitCode = productDetailPageDto.getMinUnitCodeDictText(); String minUnitCode = productDetailPageDto.getMinUnitCodeDictText();
// 获取数量 // 获取数量
>>>>>>> v1.3
BigDecimal number = productDetailPageDto.getNumber(); BigDecimal number = productDetailPageDto.getNumber();
BigDecimal remainder = productDetailPageDto.getRemainder(); BigDecimal remainder = productDetailPageDto.getRemainder();
// 拼接 // 拼接
if (remainder.compareTo(BigDecimal.ZERO) > 0) { if (remainder.compareTo(BigDecimal.ZERO) > 0) {
<<<<<<< HEAD
productDetailPageDto.setNumber_text(number.setScale(0, RoundingMode.HALF_UP) + unitCode + remainder.setScale(0, RoundingMode.HALF_UP) + minUnitCode);
} else {
productDetailPageDto.setNumber_text(number.setScale(0, RoundingMode.HALF_UP) + unitCode);
}
productDetailPageDto.setQuantity_text(productDetailPageDto.getQuantity().setScale(0, RoundingMode.HALF_UP) + minUnitCode);
// 金额字段拼接 ‘元’
=======
productDetailPageDto.setNumber_text(number.setScale(0, RoundingMode.HALF_UP) + unitCode productDetailPageDto.setNumber_text(number.setScale(0, RoundingMode.HALF_UP) + unitCode
+ remainder.setScale(0, RoundingMode.HALF_UP) + minUnitCode); + remainder.setScale(0, RoundingMode.HALF_UP) + minUnitCode);
} else { } else {
@@ -523,27 +414,11 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
productDetailPageDto.getQuantity().setScale(0, RoundingMode.HALF_UP) + minUnitCode); productDetailPageDto.getQuantity().setScale(0, RoundingMode.HALF_UP) + minUnitCode);
// 金额字段拼接 // 金额字段拼接
>>>>>>> v1.3
BigDecimal purchasePrice = productDetailPageDto.getPurchasePrice(); BigDecimal purchasePrice = productDetailPageDto.getPurchasePrice();
BigDecimal salePrice = productDetailPageDto.getSalePrice(); BigDecimal salePrice = productDetailPageDto.getSalePrice();
BigDecimal totalPurchasePrice = productDetailPageDto.getTotalPurchasePrice(); BigDecimal totalPurchasePrice = productDetailPageDto.getTotalPurchasePrice();
BigDecimal totalSalePrice = productDetailPageDto.getTotalSalePrice(); BigDecimal totalSalePrice = productDetailPageDto.getTotalSalePrice();
if (salePrice != null) { if (salePrice != null) {
<<<<<<< HEAD
productDetailPageDto.setExcelSalePrice(salePrice.setScale(2, RoundingMode.HALF_UP) + "");
}
if (purchasePrice != null) {
productDetailPageDto.setExcelPurchasePrice(purchasePrice.setScale(2, RoundingMode.HALF_UP) + "");
}
if (totalPurchasePrice != null) {
productDetailPageDto.setExcelTotalPurchasePrice(totalPurchasePrice.setScale(2, RoundingMode.HALF_UP) + "");
}
if (totalSalePrice != null) {
productDetailPageDto.setExcelTotalSalePrice(totalSalePrice.setScale(2, RoundingMode.HALF_UP) + "");
=======
productDetailPageDto.setExcelSalePrice( productDetailPageDto.setExcelSalePrice(
salePrice.setScale(2, RoundingMode.HALF_UP) + ""); salePrice.setScale(2, RoundingMode.HALF_UP) + "");
} }
@@ -561,26 +436,13 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
if (totalSalePrice != null) { if (totalSalePrice != null) {
productDetailPageDto.setExcelTotalSalePrice( productDetailPageDto.setExcelTotalSalePrice(
totalSalePrice.setScale(2, RoundingMode.HALF_UP) + ""); totalSalePrice.setScale(2, RoundingMode.HALF_UP) + "");
>>>>>>> v1.3
} }
// 判断项目类别 // 判断项目类别
String devCategoryCodeDictText = productDetailPageDto.getDevCategoryCodeDictText(); String devCategoryCodeDictText = productDetailPageDto.getDevCategoryCodeDictText();
String medCategoryCodeDictText = productDetailPageDto.getMedCategoryCodeDictText(); String medCategoryCodeDictText = productDetailPageDto.getMedCategoryCodeDictText();
<<<<<<< HEAD String categoryCodeDictText
String categoryCodeDictText = devCategoryCodeDictText == null ? medCategoryCodeDictText : devCategoryCodeDictText; = devCategoryCodeDictText == null ? medCategoryCodeDictText : devCategoryCodeDictText;
productDetailPageDto.setCategoryCodeDictText(categoryCodeDictText);
}
//导出
ExcelUtil<ProductDetailPageDto> util = new ExcelUtil(ProductDetailPageDto.class);
util.exportExcel(response, dataList, "库存明细记录");
} catch (Exception e) {
e.printStackTrace();
System.out.printf("导出Excel失败" + e.getMessage());
=======
String categoryCodeDictText =
devCategoryCodeDictText == null ? medCategoryCodeDictText : devCategoryCodeDictText;
productDetailPageDto.setCategoryCodeDictText(categoryCodeDictText); productDetailPageDto.setCategoryCodeDictText(categoryCodeDictText);
} }
@@ -589,86 +451,19 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
util.exportExcel(response, dataList, CommonConstants.SheetName.INVENTORY_DETAIL_RECORD); util.exportExcel(response, dataList, CommonConstants.SheetName.INVENTORY_DETAIL_RECORD);
} catch (Exception e) { } catch (Exception e) {
throw new NonCaptureException(StringUtils.format("导出excel失败"), e); throw new NonCaptureException(StringUtils.format("导出excel失败"), e);
>>>>>>> v1.3
} }
} }
} }
<<<<<<< HEAD
/**
* 查询库存商品明细分页列表,联查数据字典
*
* @param productDetailSearchParam 查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
=======
/** /**
* 查询库存商品明细分页列表,联查数据字典翻译单位字段 * 查询库存商品明细分页列表,联查数据字典翻译单位字段
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
>>>>>>> v1.3
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
* @return 库存商品明细分页列表 * @return 库存商品明细分页列表
*/ */
<<<<<<< HEAD
public R<?> getProductDetailPageX(ProductDetailSearchParam productDetailSearchParam, Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
Integer categoryCode = productDetailSearchParam.getCategoryCode();
Integer zeroFlag = productDetailSearchParam.getZeroFlag();
Integer remainingDays = productDetailSearchParam.getRemainingDays();
List<Long> locationIds = productDetailSearchParam.getLocationIds();
List<Long> supplierIds = productDetailSearchParam.getSupplierIds();
productDetailSearchParam.setCategoryCode((Integer)null).setZeroFlag((Integer)null).setRemainingDays((Integer)null).setLocationIds((List)null).setSupplierIds((List)null);
QueryWrapper<ProductDetailSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(productDetailSearchParam, searchKey, new HashSet(Arrays.asList("item_name", "bus_no", "py_str", "wb_str")), request);
if (categoryCode != null) {
if (!categoryCode.equals(ItemCategoryCode.CHINESE_PATENT_DRUG.getValue()) && !categoryCode.equals(ItemCategoryCode.WESTERN_MEDICINE.getValue()) && !categoryCode.equals(ItemCategoryCode.EXTERNALLY_PROCURED_DRUGS.getValue()) && !categoryCode.equals(ItemCategoryCode.CHINESE_HERBAL_MEDICINE.getValue())) {
if (categoryCode.equals(ItemCategoryCode.DEVICE.getValue())) {
queryWrapper.eq("item_table", "adm_device_definition");
}
} else {
queryWrapper.eq("item_table", "med_medication_definition");
queryWrapper.eq("med_category_code", categoryCode.toString());
}
}
if (zeroFlag != null) {
if (Whether.YES.getValue().equals(zeroFlag)) {
queryWrapper.eq("quantity", BigDecimal.ZERO);
} else {
queryWrapper.gt("quantity", BigDecimal.ZERO);
}
}
if (locationIds != null && !locationIds.isEmpty()) {
queryWrapper.in("location_id", locationIds);
}
if (supplierIds != null && !supplierIds.isEmpty()) {
queryWrapper.in("supplier_id", supplierIds);
}
if (remainingDays != null) {
queryWrapper.le("remaining_days", remainingDays);
}
Page<ProductDetailPageDto> productDetailsPage = this.productDetailsMapper.selectProductDetailsPageX(new Page((long)pageNo, (long)pageSize), queryWrapper, "med_medication_definition", "adm_device_definition", ConditionCode.LOT_NUMBER_COST.getCode());
List<ProductDetailPageDto> productDetailList = productDetailsPage.getRecords();
if (productDetailList != null && !productDetailList.isEmpty()) {
String orderPricingSource = TenantOptionUtil.getOptionContent(TenantOptionDict.ORDER_PRICING_SOURCE);
if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) {
List<Long> chargeItemDefIdList = (List)productDetailList.stream().map(ProductDetailPageDto::getChargeItemDefId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
if (!chargeItemDefIdList.isEmpty()) {
List<ChargeItemDefDetail> lotNumberPriceList = this.chargeItemDefDetailService.getLotNumberPriceByDefIds(chargeItemDefIdList);
if (lotNumberPriceList != null && !lotNumberPriceList.isEmpty()) {
Map<String, BigDecimal> lotPriceMap = (Map)lotNumberPriceList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getConditionValue, ChargeItemDefDetail::getAmount, (existing, replacement) -> existing));
for(ProductDetailPageDto productDetail : productDetailList) {
BigDecimal price = (BigDecimal)lotPriceMap.get(productDetail.getLotNumber());
if (price != null) {
productDetail.setTotalSalePrice(price);
=======
private R<List<ProductDetailPageDto>> getProductDetailPageAndTranslateField( private R<List<ProductDetailPageDto>> getProductDetailPageAndTranslateField(
ProductDetailSearchParam productDetailSearchParam, String searchKey, HttpServletRequest request) { ProductDetailSearchParam productDetailSearchParam, String searchKey, HttpServletRequest request) {
// 药品类型 // 药品类型
@@ -727,18 +522,18 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
// 批次售价需查询定价子表 // 批次售价需查询定价子表
if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) { if (OrderPricingSource.BATCH_SELLING_PRICE.getCode().equals(orderPricingSource)) {
// 收集所有定价ID // 收集所有定价ID
List<Long> chargeItemDefIdList = List<Long> chargeItemDefIdList
productDetailList.stream().map(ProductDetailPageDto::getChargeItemDefId).filter(Objects::nonNull) = productDetailList.stream().map(ProductDetailPageDto::getChargeItemDefId).filter(Objects::nonNull)
.distinct().collect(Collectors.toList()); .distinct().collect(Collectors.toList());
// 查询批次售价信息 // 查询批次售价信息
if (!chargeItemDefIdList.isEmpty()) { if (!chargeItemDefIdList.isEmpty()) {
List<ChargeItemDefDetail> lotNumberPriceList = List<ChargeItemDefDetail> lotNumberPriceList
chargeItemDefDetailService.getLotNumberPriceByDefIds(chargeItemDefIdList); = chargeItemDefDetailService.getLotNumberPriceByDefIds(chargeItemDefIdList);
if (lotNumberPriceList != null && !lotNumberPriceList.isEmpty()) { if (lotNumberPriceList != null && !lotNumberPriceList.isEmpty()) {
// 创建批次号到售价的映射 // 创建批次号到售价的映射
Map<String, BigDecimal> lotPriceMap = Map<String, BigDecimal> lotPriceMap
lotNumberPriceList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getConditionValue, = lotNumberPriceList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getConditionValue,
ChargeItemDefDetail::getAmount, (existing, replacement) -> existing)); // 处理重复键的情况 ChargeItemDefDetail::getAmount, (existing, replacement) -> existing)); // 处理重复键的情况
// 更新原始列表中的售价 // 更新原始列表中的售价
@@ -746,34 +541,12 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
BigDecimal price = lotPriceMap.get(productDetail.getLotNumber()); BigDecimal price = lotPriceMap.get(productDetail.getLotNumber());
if (price != null) { if (price != null) {
productDetail.setSalePrice(price); productDetail.setSalePrice(price);
>>>>>>> v1.3
} }
} }
} }
} }
} }
<<<<<<< HEAD
for(ProductDetailPageDto productDetailPageDto : productDetailList) {
productDetailPageDto.setChrgitmLv_enumText(EnumUtils.getInfoByValue(YbChrgitmLv.class, productDetailPageDto.getChrgitmLv()));
productDetailPageDto.setInventoryStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, productDetailPageDto.getInventoryStatusEnum()));
BigDecimal[] results = productDetailPageDto.getQuantity().divideAndRemainder(productDetailPageDto.getPartPercent());
productDetailPageDto.setNumber(results[0]);
productDetailPageDto.setRemainder(results[1]);
if (productDetailPageDto.getPurchasePrice() != null) {
productDetailPageDto.setTotalPurchasePrice(productDetailPageDto.getPurchasePrice().multiply(results[0]).add(productDetailPageDto.getPurchasePrice().divide(productDetailPageDto.getPartPercent(), 4, RoundingMode.HALF_UP).multiply(results[1])));
}
if (productDetailPageDto.getSalePrice() != null) {
productDetailPageDto.setTotalSalePrice(productDetailPageDto.getSalePrice().multiply(results[0]).add(productDetailPageDto.getSalePrice().divide(productDetailPageDto.getPartPercent(), 4, RoundingMode.HALF_UP).multiply(results[1])));
}
}
}
return R.ok(productDetailsPage);
}
=======
for (ProductDetailPageDto productDetailPageDto : productDetailList) { for (ProductDetailPageDto productDetailPageDto : productDetailList) {
// 医保等级 // 医保等级
productDetailPageDto.setChrgitmLv_enumText( productDetailPageDto.setChrgitmLv_enumText(
@@ -783,8 +556,8 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
EnumUtils.getInfoByValue(PublicationStatus.class, productDetailPageDto.getInventoryStatusEnum())); EnumUtils.getInfoByValue(PublicationStatus.class, productDetailPageDto.getInventoryStatusEnum()));
// 计算包装单位数量 // 计算包装单位数量
BigDecimal[] results = BigDecimal[] results
productDetailPageDto.getQuantity().divideAndRemainder(productDetailPageDto.getPartPercent()); = productDetailPageDto.getQuantity().divideAndRemainder(productDetailPageDto.getPartPercent());
// 整数 // 整数
productDetailPageDto.setNumber(results[0]); productDetailPageDto.setNumber(results[0]);
// 余数 // 余数
@@ -870,14 +643,13 @@ public class ProductDetailAppServiceImpl extends ServiceImpl<InventoryItemMapper
} }
try { try {
// 导出 // 导出
NewExcelUtil<ProductDetailPageDto> newExcelUtil = NewExcelUtil<ProductDetailPageDto> newExcelUtil
new NewExcelUtil<>(ProductDetailPageDto.class); = new NewExcelUtil<>(ProductDetailPageDto.class);
newExcelUtil.exportExcel(response, dataList, CommonConstants.SheetName.INVENTORY_DETAIL_RECORD); newExcelUtil.exportExcel(response, dataList, CommonConstants.SheetName.INVENTORY_DETAIL_RECORD);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
} }
>>>>>>> v1.3
} }

View File

@@ -3,18 +3,9 @@
*/ */
package com.openhis.web.inventorymanage.appservice.impl; package com.openhis.web.inventorymanage.appservice.impl;
<<<<<<< HEAD
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
=======
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.*; import java.util.*;
>>>>>>> v1.3
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -22,25 +13,15 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
=======
import com.openhis.administration.domain.Location; import com.openhis.administration.domain.Location;
import com.openhis.administration.service.impl.LocationServiceImpl; import com.openhis.administration.service.impl.LocationServiceImpl;
>>>>>>> v1.3
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.exception.ServiceException; import com.core.common.exception.ServiceException;
<<<<<<< HEAD
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.DateUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.SecurityUtils;
=======
import com.core.common.utils.*; import com.core.common.utils.*;
>>>>>>> v1.3
import com.core.common.utils.bean.BeanUtils; import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.Practitioner; import com.openhis.administration.domain.Practitioner;
import com.openhis.administration.domain.Supplier; import com.openhis.administration.domain.Supplier;
@@ -156,8 +137,8 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
searchFields.add(CommonConstants.FieldName.SupplyBusNo); searchFields.add(CommonConstants.FieldName.SupplyBusNo);
// 构建查询条件 // 构建查询条件
QueryWrapper<InventorySearchParam> queryWrapper = QueryWrapper<InventorySearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(inventorySearchParam, searchKey, searchFields, request); = HisQueryUtils.buildQueryWrapper(inventorySearchParam, searchKey, searchFields, request);
// 查询入库单据分页列表 // 查询入库单据分页列表
Page<ReceiptPageDto> inventoryReceiptPage = purchaseInventoryMapper.selectInventoryReceiptPage( Page<ReceiptPageDto> inventoryReceiptPage = purchaseInventoryMapper.selectInventoryReceiptPage(
new Page<>(pageNo, pageSize), queryWrapper, SupplyType.PURCHASE_INVENTORY.getValue()); new Page<>(pageNo, pageSize), queryWrapper, SupplyType.PURCHASE_INVENTORY.getValue());
@@ -227,8 +208,8 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
List<String> idList = new ArrayList<>(); List<String> idList = new ArrayList<>();
// 单据号取得 // 单据号取得
List<String> busNoList = List<String> busNoList
purchaseInventoryDtoList.stream().map(PurchaseInventoryDto::getBusNo).collect(Collectors.toList()); = purchaseInventoryDtoList.stream().map(PurchaseInventoryDto::getBusNo).collect(Collectors.toList());
// 请求数据取得 // 请求数据取得
List<SupplyRequest> requestList = supplyRequestService.getSupplyByBusNo(busNoList.get(0)); List<SupplyRequest> requestList = supplyRequestService.getSupplyByBusNo(busNoList.get(0));
if (!requestList.isEmpty()) { if (!requestList.isEmpty()) {
@@ -337,8 +318,8 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
public R<?> getMonthlySettlementDetail(Long locationId, String startTime, String endTime, Integer pageNo, public R<?> getMonthlySettlementDetail(Long locationId, String startTime, String endTime, Integer pageNo,
Integer pageSize) { Integer pageSize) {
Page<ReceiptDetailDto> receiptDetailList = Page<ReceiptDetailDto> receiptDetailList
purchaseInventoryMapper.getMonthlySettlementDetail(new Page<>(pageNo, pageSize), locationId, startTime, = purchaseInventoryMapper.getMonthlySettlementDetail(new Page<>(pageNo, pageSize), locationId, startTime,
endTime, ItemType.MEDICINE.getValue(), ItemType.DEVICE.getValue(), endTime, ItemType.MEDICINE.getValue(), ItemType.DEVICE.getValue(),
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION, CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
Arrays.asList(SupplyType.PURCHASE_INVENTORY.getValue()), SupplyStatus.AGREE.getValue()); Arrays.asList(SupplyType.PURCHASE_INVENTORY.getValue()), SupplyStatus.AGREE.getValue());

View File

@@ -212,8 +212,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
searchFields.add(CommonConstants.FieldName.SupplyBusNo); searchFields.add(CommonConstants.FieldName.SupplyBusNo);
// 构建查询条件 // 构建查询条件
QueryWrapper<ReceiptApprovalSearchParam> queryWrapper = QueryWrapper<ReceiptApprovalSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(receiptSearchParam, searchKey, searchFields, request); = HisQueryUtils.buildQueryWrapper(receiptSearchParam, searchKey, searchFields, request);
if (typeEnumList != null && !typeEnumList.isEmpty()) { if (typeEnumList != null && !typeEnumList.isEmpty()) {
queryWrapper.in(CommonConstants.FieldName.TypeEnum, typeEnumList); queryWrapper.in(CommonConstants.FieldName.TypeEnum, typeEnumList);
@@ -346,8 +346,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity()); minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity());
} }
// 更新源仓库库存数量 // 更新源仓库库存数量
Boolean aBoolean = Boolean aBoolean
inventoryItemService.updateInventoryQuantity(inventoryItemPurpose.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItemPurpose.getId(), minQuantity, now);
if (!aBoolean) { if (!aBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
@@ -368,8 +368,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 调用医保商品采购接口 // 调用医保商品采购接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) { if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = List<String> uploadFailedNoList
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, now, false); = this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.PURCHASE_IN, now, false);
if (!uploadFailedNoList.isEmpty()) { if (!uploadFailedNoList.isEmpty()) {
returnMsg = "3503商品采购上传错误错误项目编码" + uploadFailedNoList; returnMsg = "3503商品采购上传错误错误项目编码" + uploadFailedNoList;
} else { } else {
@@ -444,8 +444,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity()); minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity());
// } // }
// 更新库存数量 // 更新库存数量
Boolean aBoolean = Boolean aBoolean
inventoryItemService.updateInventoryQuantity(inventoryItem.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItem.getId(), minQuantity, now);
if (!aBoolean) { if (!aBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
} }
@@ -460,13 +460,13 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
List<String> uploadFailedLossList = null; List<String> uploadFailedLossList = null;
if (!positiveList.isEmpty()) { if (!positiveList.isEmpty()) {
// 调用医保库存变更接口,盘盈 // 调用医保库存变更接口,盘盈
uploadFailedGainList = uploadFailedGainList
this.ybInventoryIntegrated(positiveList, YbInvChgType.INVENTORY_GAIN, now, false); = this.ybInventoryIntegrated(positiveList, YbInvChgType.INVENTORY_GAIN, now, false);
} }
if (!negativeList.isEmpty()) { if (!negativeList.isEmpty()) {
// 调用医保库存变更接口,盘亏 // 调用医保库存变更接口,盘亏
uploadFailedLossList = uploadFailedLossList
this.ybInventoryIntegrated(negativeList, YbInvChgType.INVENTORY_LOSS, now, false); = this.ybInventoryIntegrated(negativeList, YbInvChgType.INVENTORY_LOSS, now, false);
} }
if (uploadFailedGainList != null || uploadFailedLossList != null) { if (uploadFailedGainList != null || uploadFailedLossList != null) {
changeReturnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedGainList + uploadFailedLossList; changeReturnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedGainList + uploadFailedLossList;
@@ -562,8 +562,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
} }
// } // }
// 更新源仓库库存数量 // 更新源仓库库存数量
Boolean aBoolean = Boolean aBoolean
inventoryItemService.updateInventoryQuantity(inventoryItemSource.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItemSource.getId(), minQuantity, now);
if (!aBoolean) { if (!aBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
} }
@@ -609,8 +609,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity()); minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity());
// } // }
// 更新目的仓库库存数量 // 更新目的仓库库存数量
Boolean bBoolean = Boolean bBoolean
inventoryItemService.updateInventoryQuantity(inventoryItemPurpose.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItemPurpose.getId(), minQuantity, now);
if (!bBoolean) { if (!bBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
@@ -710,8 +710,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
} }
// 更新仓库库存数量 // 更新仓库库存数量
Boolean aBoolean = Boolean aBoolean
inventoryItemService.updateInventoryQuantity(inventoryItemSource.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItemSource.getId(), minQuantity, now);
if (!aBoolean) { if (!aBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
@@ -729,8 +729,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 调用医保采购退货接口 // 调用医保采购退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) { if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = List<String> uploadFailedNoList
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, now, false); = this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.RETURN_OUT, now, false);
if (!uploadFailedNoList.isEmpty()) { if (!uploadFailedNoList.isEmpty()) {
returnMsg = "3504采购退货上传错误错误项目编码" + uploadFailedNoList; returnMsg = "3504采购退货上传错误错误项目编码" + uploadFailedNoList;
} }
@@ -806,8 +806,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
} }
} }
// 更新库存数量 // 更新库存数量
Boolean aBoolean = Boolean aBoolean
inventoryItemService.updateInventoryQuantity(inventoryItem.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItem.getId(), minQuantity, now);
if (!aBoolean) { if (!aBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
} }
@@ -821,8 +821,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 调用医保库存变更接口 // 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) { if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = List<String> uploadFailedNoList
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.DESTRUCTION, now, false); = this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.DESTRUCTION, now, false);
if (!uploadFailedNoList.isEmpty()) { if (!uploadFailedNoList.isEmpty()) {
returnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedNoList; returnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedNoList;
} }
@@ -866,8 +866,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
if (!supplyItemDetailList.isEmpty()) { if (!supplyItemDetailList.isEmpty()) {
// 根据项目id,产品批号源仓库id 查询源仓库库存表信息 // 根据项目id,产品批号源仓库id 查询源仓库库存表信息
List<InventoryItem> inventoryItemList = List<InventoryItem> inventoryItemList
inventoryItemService.list(new LambdaQueryWrapper<InventoryItem>().in(InventoryItem::getItemId, = inventoryItemService.list(new LambdaQueryWrapper<InventoryItem>().in(InventoryItem::getItemId,
supplyItemDetailList.stream().map(SupplyItemDetailDto::getItemId).toList())); supplyItemDetailList.stream().map(SupplyItemDetailDto::getItemId).toList()));
for (SupplyItemDetailDto supplyItemDetailDto : supplyItemDetailList) { for (SupplyItemDetailDto supplyItemDetailDto : supplyItemDetailList) {
if (!inventoryItemList.isEmpty()) { if (!inventoryItemList.isEmpty()) {
@@ -899,8 +899,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
} }
} }
// 更新源仓库库存数量 // 更新源仓库库存数量
Boolean aBoolean = Boolean aBoolean
inventoryItemService.updateInventoryQuantity(inventoryItem.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItem.getId(), minQuantity, now);
if (!aBoolean) { if (!aBoolean) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
@@ -918,8 +918,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 调用医保库存变更接口 // 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) { if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = List<String> uploadFailedNoList
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.OTHER_OUT, now, false); = this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.OTHER_OUT, now, false);
if (!uploadFailedNoList.isEmpty()) { if (!uploadFailedNoList.isEmpty()) {
returnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedNoList; returnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedNoList;
} }
@@ -992,8 +992,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity()); minQuantity = minQuantity.add(supplyItemDetailDto.getItemQuantity());
} }
// 更新目的仓库库存数量 // 更新目的仓库库存数量
Boolean bBoolean = Boolean bBoolean
inventoryItemService.updateInventoryQuantity(inventoryItemPurpose.getId(), minQuantity, now); = inventoryItemService.updateInventoryQuantity(inventoryItemPurpose.getId(), minQuantity, now);
if (!bBoolean) { if (!bBoolean) {
throw new ServiceException("系统异常,请稍后重试"); throw new ServiceException("系统异常,请稍后重试");
} }
@@ -1014,8 +1014,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 调用医保库存变更接口 // 调用医保库存变更接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关 String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) { if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList = List<String> uploadFailedNoList
this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.OTHER_IN, now, false); = this.ybInventoryIntegrated(supplyItemDetailList, YbInvChgType.OTHER_IN, now, false);
if (!uploadFailedNoList.isEmpty()) { if (!uploadFailedNoList.isEmpty()) {
returnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedNoList; returnMsg = "3502库存变更上传错误错误项目编码" + uploadFailedNoList;
} }
@@ -1051,15 +1051,16 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
List<ChargeItemDefDetail> resultList = new ArrayList<>(); List<ChargeItemDefDetail> resultList = new ArrayList<>();
// 将各个项目的定价信息按项目id分组 // 将各个项目的定价信息按项目id分组
Map<Long, List<ItemChargeDetailDto>> chargeDetailGroup = Map<Long, List<ItemChargeDetailDto>> chargeDetailGroup
chargeDetailList.stream().collect(Collectors.groupingBy(ItemChargeDetailDto::getInstanceId)); = chargeDetailList.stream().collect(Collectors.groupingBy(ItemChargeDetailDto::getInstanceId));
for (SupplyRequest supplyRequest : agreedList) { for (SupplyRequest supplyRequest : agreedList) {
Long itemId = supplyRequest.getItemId(); Long itemId = supplyRequest.getItemId();
// 通过供应项目id匹配项目定价 // 通过供应项目id匹配项目定价
List<ItemChargeDetailDto> details = chargeDetailGroup.get(itemId); List<ItemChargeDetailDto> details = chargeDetailGroup.get(itemId);
if (details == null) if (details == null) {
continue; continue;
}
boolean shouldSkip = false; boolean shouldSkip = false;
for (ItemChargeDetailDto detail : details) { for (ItemChargeDetailDto detail : details) {
@@ -1145,11 +1146,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 所有类型都需要调用库存变更(特殊类型失败时跳过) // 所有类型都需要调用库存变更(特殊类型失败时跳过)
if (!skipInventoryUpdate) { if (!skipInventoryUpdate) {
result = ybManager.updateInventoryCount( result = ybManager.updateInventoryCount(
<<<<<<< HEAD
getMedicalInventory3502Param(supplyItemDetailDto, now, ybInvChgType.getValue()));
=======
getMedicalInventory3502Param(supplyItemDetailDto, now, ybInvChgType.getValue(), saleFlag)); getMedicalInventory3502Param(supplyItemDetailDto, now, ybInvChgType.getValue(), saleFlag));
>>>>>>> v1.3
if (result.getCode() != 200) { if (result.getCode() != 200) {
uploadFailedNoList.add(supplyItemDetailDto.getItemBusNo()); uploadFailedNoList.add(supplyItemDetailDto.getItemBusNo());
} }
@@ -1204,12 +1201,12 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
String ybInvChgType, boolean saleFlag) { String ybInvChgType, boolean saleFlag) {
MedicalInventory3502Param medicalInventory3502Param = new MedicalInventory3502Param(); MedicalInventory3502Param medicalInventory3502Param = new MedicalInventory3502Param();
// 查库存信息 // 查库存信息
List<InventoryItem> inventoryItemList = List<InventoryItem> inventoryItemList
inventoryItemService.selectInventoryByItemId(supplyItemDetailDto.getItemId(), = inventoryItemService.selectInventoryByItemId(supplyItemDetailDto.getItemId(),
supplyItemDetailDto.getLotNumber(), null, SecurityUtils.getLoginUser().getTenantId()); supplyItemDetailDto.getLotNumber(), null, SecurityUtils.getLoginUser().getTenantId());
// 查询商品价格信息 // 查询商品价格信息
List<ItemChargeDetailDto> itemChargeDetailList = List<ItemChargeDetailDto> itemChargeDetailList
receiptApprovalAppService.getItemChargeDetail(List.of(supplyItemDetailDto.getItemId())); = receiptApprovalAppService.getItemChargeDetail(List.of(supplyItemDetailDto.getItemId()));
if (!inventoryItemList.isEmpty() && !itemChargeDetailList.isEmpty()) { if (!inventoryItemList.isEmpty() && !itemChargeDetailList.isEmpty()) {
// 获取该项目所有的数量(最小单位) // 获取该项目所有的数量(最小单位)
BigDecimal totalQuantity = inventoryItemList.stream() BigDecimal totalQuantity = inventoryItemList.stream()
@@ -1267,8 +1264,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
private MedicalInventory3501Param getMedicalInventory3501Param(SupplyItemDetailDto supplyItemDetailDto, Date date) { private MedicalInventory3501Param getMedicalInventory3501Param(SupplyItemDetailDto supplyItemDetailDto, Date date) {
MedicalInventory3501Param medicalInventory3501Param = new MedicalInventory3501Param(); MedicalInventory3501Param medicalInventory3501Param = new MedicalInventory3501Param();
// 查库存信息 // 查库存信息
List<InventoryItem> inventoryItemList = List<InventoryItem> inventoryItemList
inventoryItemService.selectInventoryByItemId(supplyItemDetailDto.getItemId(), = inventoryItemService.selectInventoryByItemId(supplyItemDetailDto.getItemId(),
supplyItemDetailDto.getLotNumber(), null, SecurityUtils.getLoginUser().getTenantId()); supplyItemDetailDto.getLotNumber(), null, SecurityUtils.getLoginUser().getTenantId());
if (!inventoryItemList.isEmpty()) { if (!inventoryItemList.isEmpty()) {
// 获取该项目所有的数量(最小单位) // 获取该项目所有的数量(最小单位)

View File

@@ -143,9 +143,6 @@ public class LossReportFormController {
// @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { // @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
// return lossReportFormAppService.getMonthlySettlementDetail(locationId, startTime,endTime,pageNo,pageSize); // return lossReportFormAppService.getMonthlySettlementDetail(locationId, startTime,endTime,pageNo,pageSize);
// } // }
<<<<<<< HEAD
=======
/** /**
* 报损单据明细导出 * 报损单据明细导出
* *
@@ -156,5 +153,4 @@ public class LossReportFormController {
public void exportExcel(@RequestParam String busNo, HttpServletResponse response) { public void exportExcel(@RequestParam String busNo, HttpServletResponse response) {
lossReportFormAppService.makeExcelFile(busNo, response); lossReportFormAppService.makeExcelFile(busNo, response);
} }
>>>>>>> v1.3
} }

View File

@@ -1,25 +1,17 @@
package com.openhis.web.inventorymanage.controller; package com.openhis.web.inventorymanage.controller;
<<<<<<< HEAD
=======
import java.util.List; import java.util.List;
>>>>>>> v1.3
import javax.annotation.Resource; 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.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
<<<<<<< HEAD
import com.core.common.core.domain.R;
import com.openhis.web.inventorymanage.appservice.IProductDetailAppService;
=======
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.openhis.web.inventorymanage.appservice.IProductDetailAppService; import com.openhis.web.inventorymanage.appservice.IProductDetailAppService;
import com.openhis.web.inventorymanage.dto.ProductDetailPageDto; import com.openhis.web.inventorymanage.dto.ProductDetailPageDto;
>>>>>>> v1.3
import com.openhis.web.inventorymanage.dto.ProductDetailSearchParam; import com.openhis.web.inventorymanage.dto.ProductDetailSearchParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -59,11 +51,7 @@ public class ProductDetailController {
* @return 库存商品明细分页列表 * @return 库存商品明细分页列表
*/ */
@GetMapping(value = "/product-page") @GetMapping(value = "/product-page")
<<<<<<< HEAD
public R<?> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam,
=======
public R<Page<ProductDetailPageDto>> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam, public R<Page<ProductDetailPageDto>> getProductDetailPage(ProductDetailSearchParam productDetailSearchParam,
>>>>>>> v1.3
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "1000") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "1000") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
@@ -72,8 +60,6 @@ public class ProductDetailController {
} }
/** /**
<<<<<<< HEAD
=======
* 查询库存商品备份明细分页列表 * 查询库存商品备份明细分页列表
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
@@ -93,7 +79,6 @@ public class ProductDetailController {
} }
/** /**
>>>>>>> v1.3
* 查询库存商品明细统计数据 * 查询库存商品明细统计数据
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
@@ -108,16 +93,6 @@ public class ProductDetailController {
} }
/** /**
<<<<<<< HEAD
* 操作:停供
*
* @param inventoryId 库存项目管理ID
* @return 操作结果
*/
@PutMapping("/stop-supply")
public R<?> stopSupplyById(@RequestBody Long inventoryId) {
return productDetailsAppService.stopSupplyById(inventoryId);
=======
* 查询库存商品备份明细统计数据 * 查询库存商品备份明细统计数据
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
@@ -140,52 +115,29 @@ public class ProductDetailController {
@PutMapping("/stop-supply") @PutMapping("/stop-supply")
public R<?> stopSupplyById(@RequestBody List<Long> inventoryIdList) { public R<?> stopSupplyById(@RequestBody List<Long> inventoryIdList) {
return productDetailsAppService.stopSupplyById(inventoryIdList); return productDetailsAppService.stopSupplyById(inventoryIdList);
>>>>>>> v1.3
} }
/** /**
* 操作:取消停供 * 操作:取消停供
* *
<<<<<<< HEAD
* @param inventoryId 库存项目管理ID
* @return 操作结果
*/
@PutMapping("/cancel-supply")
public R<?> cancelSupplyById(@RequestBody Long inventoryId) {
return productDetailsAppService.cancelSupplyById(inventoryId);
=======
* @param inventoryIdList 库存项目管理ID * @param inventoryIdList 库存项目管理ID
* @return 操作结果 * @return 操作结果
*/ */
@PutMapping("/cancel-supply") @PutMapping("/cancel-supply")
public R<?> cancelSupplyById(@RequestBody List<Long> inventoryIdList) { public R<?> cancelSupplyById(@RequestBody List<Long> inventoryIdList) {
return productDetailsAppService.cancelSupplyById(inventoryIdList); return productDetailsAppService.cancelSupplyById(inventoryIdList);
>>>>>>> v1.3
} }
/** /**
* 库存明细表导出 * 库存明细表导出
* *
* @param productDetailSearchParam 查询条件 * @param productDetailSearchParam 查询条件
<<<<<<< HEAD
* @param pageNo 当前页码
* @param pageSize 查询条数
=======
>>>>>>> v1.3
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
* @param response 响应数据 * @param response 响应数据
*/ */
@GetMapping(value = "/excel-out") @GetMapping(value = "/excel-out")
public void makeExcelFile(ProductDetailSearchParam productDetailSearchParam, public void makeExcelFile(ProductDetailSearchParam productDetailSearchParam,
<<<<<<< HEAD
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request,
HttpServletResponse response) {
productDetailsAppService.makeExcelFile(productDetailSearchParam, pageNo, pageSize, searchKey, request,
response);
=======
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request, @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request,
HttpServletResponse response) { HttpServletResponse response) {
productDetailsAppService.makeExcelFile(productDetailSearchParam, searchKey, request, response); productDetailsAppService.makeExcelFile(productDetailSearchParam, searchKey, request, response);
@@ -206,6 +158,5 @@ public class ProductDetailController {
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request, @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request,
HttpServletResponse response) { HttpServletResponse response) {
productDetailsAppService.exportExcel(productDetailSearchParam, pageNo, pageSize, searchKey, request, response); productDetailsAppService.exportExcel(productDetailSearchParam, pageNo, pageSize, searchKey, request, response);
>>>>>>> v1.3
} }
} }

View File

@@ -23,193 +23,265 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class ProductDetailPageDto { public class ProductDetailPageDto {
/** 库存项目管理ID停供用 */ /**
* 库存项目管理ID停供用
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long inventoryId; private Long inventoryId;
/** 生产日期 */ /**
* 生产日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@Excel(name = "生产日期", sort = 19, dateFormat = "yyyy-MM-dd") @Excel(name = "生产日期", sort = 19, dateFormat = "yyyy-MM-dd")
private Date productionDate; private Date productionDate;
/** 失效日期 */ /**
* 失效日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@Excel(name = "有效期至", sort = 20, dateFormat = "yyyy-MM-dd") @Excel(name = "有效期至", sort = 20, dateFormat = "yyyy-MM-dd")
private Date expirationDate; private Date expirationDate;
/** 库存状态 */ /**
* 库存状态
*/
private Integer inventoryStatusEnum; private Integer inventoryStatusEnum;
private String inventoryStatusEnum_enumText; private String inventoryStatusEnum_enumText;
/** 仓库 */ /**
* 仓库
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long locationId; private Long locationId;
/** 仓库名称 */ /**
* 仓库名称
*/
@Excel(name = "仓库", sort = 4) @Excel(name = "仓库", sort = 4)
private String locationName; private String locationName;
/** 货位 */ /**
* 货位
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long locationStoreId; private Long locationStoreId;
/** 货位名称 */ /**
* 货位名称
*/
@Excel(name = "货位", sort = 22) @Excel(name = "货位", sort = 22)
private String locationStoreName; private String locationStoreName;
/** 生产批号 */ /**
* 生产批号
*/
@Excel(name = "生产批号", sort = 7) @Excel(name = "生产批号", sort = 7)
private String lotNumber; private String lotNumber;
/** 库存数量 */ /**
* 库存数量
*/
private BigDecimal quantity; private BigDecimal quantity;
@Excel(name = "库存(最小单位)", sort = 9) @Excel(name = "库存(最小单位)", sort = 9)
private String quantity_text; private String quantity_text;
/** 包装单位数量(整数部分) */ /**
* 包装单位数量(整数部分)
*/
private BigDecimal number; private BigDecimal number;
@Excel(name = "库存(包装单位)", sort = 8) @Excel(name = "库存(包装单位)", sort = 8)
private String number_text; private String number_text;
/** 包装单位数量(余数部分) */ /**
* 包装单位数量(余数部分)
*/
private BigDecimal remainder; private BigDecimal remainder;
/** 供应商 */ /**
* 供应商
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long supplierId; private Long supplierId;
/** 供应商名称 */ /**
* 供应商名称
*/
@Excel(name = "供应商", sort = 17) @Excel(name = "供应商", sort = 17)
private String supplierName; private String supplierName;
<<<<<<< HEAD /**
======= * 项目id
/** 项目id */ */
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long itemId; private Long itemId;
>>>>>>> v1.3 /**
/** 项目名称 */ * 项目名称
*/
@Excel(name = "项目名称", sort = 2) @Excel(name = "项目名称", sort = 2)
private String itemName; private String itemName;
/** 项目名称 */ /**
* 项目名称
*/
private String itemTable; private String itemTable;
/** 项目编码 */ /**
* 项目编码
*/
@Excel(name = "药品编码", sort = 1) @Excel(name = "药品编码", sort = 1)
private String busNo; private String busNo;
/** 耗材类型 */ /**
* 耗材类型
*/
@Dict(dictCode = "device_category_code") @Dict(dictCode = "device_category_code")
private String devCategoryCode; private String devCategoryCode;
private String devCategoryCode_dictText; private String devCategoryCode_dictText;
private String devCategoryCodeDictText; private String devCategoryCodeDictText;
/** 药品类型 */ /**
* 药品类型
*/
@Dict(dictCode = "med_category_code") @Dict(dictCode = "med_category_code")
private String medCategoryCode; private String medCategoryCode;
private String medCategoryCode_dictText; private String medCategoryCode_dictText;
private String medCategoryCodeDictText; private String medCategoryCodeDictText;
/** 项目类别 */ /**
* 项目类别
*/
@Excel(name = "项目类别", sort = 3) @Excel(name = "项目类别", sort = 3)
private String CategoryCodeDictText; private String CategoryCodeDictText;
/** 医保等级 */ /**
* 医保等级
*/
private Integer chrgitmLv; private Integer chrgitmLv;
@Excel(name = "医保等级", sort = 18) @Excel(name = "医保等级", sort = 18)
private String chrgitmLv_enumText; private String chrgitmLv_enumText;
/** 厂家 */ /**
* 厂家
*/
@Excel(name = "厂家/产地", sort = 6) @Excel(name = "厂家/产地", sort = 6)
private String manufacturerText; private String manufacturerText;
/** 医保码 */ /**
* 医保码
*/
private String ybNo; private String ybNo;
/** 五笔码 */ /**
* 五笔码
*/
private String wbStr; private String wbStr;
/** 拼音码 */ /**
* 拼音码
*/
private String pyStr; private String pyStr;
/** 包装单位 */ /**
* 包装单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
private String unitCodeDictText; private String unitCodeDictText;
/** 库存单位 */ /**
* 库存单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String minUnitCode; private String minUnitCode;
private String minUnitCode_dictText; private String minUnitCode_dictText;
private String minUnitCodeDictText; private String minUnitCodeDictText;
/** 拆零比 */ /**
* 拆零比
*/
@Excel(name = "拆零比", sort = 10, scale = 0) @Excel(name = "拆零比", sort = 10, scale = 0)
private BigDecimal partPercent; private BigDecimal partPercent;
/** 批准文号/国药准字 */ /**
* 批准文号/国药准字
*/
@Excel(name = "国药准字", sort = 16) @Excel(name = "国药准字", sort = 16)
private String approvalNumber; private String approvalNumber;
/** 剂型 */ /**
* 剂型
*/
@Dict(dictCode = "dose_form_code") @Dict(dictCode = "dose_form_code")
private String doseFormCode; private String doseFormCode;
private String doseFormCode_dictText; private String doseFormCode_dictText;
@Excel(name = "剂型", sort = 15) @Excel(name = "剂型", sort = 15)
private String doseFormCodeDictText; private String doseFormCodeDictText;
/** 规格 */ /**
* 规格
*/
@Excel(name = "规格", sort = 5) @Excel(name = "规格", sort = 5)
private String totalVolume; private String totalVolume;
/** 零售价 */ /**
* 零售价
*/
private BigDecimal salePrice; private BigDecimal salePrice;
@Excel(name = "零售价", sort = 12) @Excel(name = "零售价", sort = 12)
private String excelSalePrice = ""; private String excelSalePrice = "";
/** 定价id */ /**
* 定价id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long chargeItemDefId; private Long chargeItemDefId;
/** 进价 */ /**
* 进价
*/
private BigDecimal purchasePrice; private BigDecimal purchasePrice;
@Excel(name = "采购价格", sort = 11) @Excel(name = "采购价格", sort = 11)
private String excelPurchasePrice = ""; private String excelPurchasePrice = "";
/** 剩余过期天数 */ /**
* 剩余过期天数
*/
@Excel(name = "剩余过期天数", sort = 21) @Excel(name = "剩余过期天数", sort = 21)
private Integer remainingDays; private Integer remainingDays;
/** 总零售价 */ /**
* 总零售价
*/
private BigDecimal totalSalePrice; private BigDecimal totalSalePrice;
@Excel(name = "零售价总额", sort = 14) @Excel(name = "零售价总额", sort = 14)
private String excelTotalSalePrice = ""; private String excelTotalSalePrice = "";
/** 总进价 */ /**
* 总进价
*/
private BigDecimal totalPurchasePrice; private BigDecimal totalPurchasePrice;
<<<<<<< HEAD
@Excel(name = "进价总额", sort = 13, scale = 2)
=======
@Excel(name = "进价总额", sort = 13) @Excel(name = "进价总额", sort = 13)
>>>>>>> v1.3
private String excelTotalPurchasePrice = ""; private String excelTotalPurchasePrice = "";
/** 售价统计 */ /**
* 售价统计
*/
private BigDecimal salePriceStatistics; private BigDecimal salePriceStatistics;
/** 进价统计 */ /**
* 进价统计
*/
private BigDecimal purchasePriceStatistics; private BigDecimal purchasePriceStatistics;
<<<<<<< HEAD /**
======= * 备份时间
/** 备份时间 */ */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date backUpDate; private Date backUpDate;
>>>>>>> v1.3
// 设置统计金额默认值为零 // 设置统计金额默认值为零
public ProductDetailPageDto() { public ProductDetailPageDto() {
this.totalSalePrice = BigDecimal.ZERO; this.totalSalePrice = BigDecimal.ZERO;

View File

@@ -1,9 +1,6 @@
package com.openhis.web.inventorymanage.dto; package com.openhis.web.inventorymanage.dto;
<<<<<<< HEAD
=======
import java.util.Date; import java.util.Date;
>>>>>>> v1.3
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
@@ -19,41 +16,53 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class ProductDetailSearchParam { public class ProductDetailSearchParam {
/** 剩余过期天数 */ /**
* 剩余过期天数
*/
private Integer remainingDays; private Integer remainingDays;
<<<<<<< HEAD /**
/** 项目类型 */ * 药品类型
private Integer categoryCode; */
=======
/** 药品类型 */
private List<String> medCategoryCodes; private List<String> medCategoryCodes;
/** 耗材类型 */ /**
* 耗材类型
*/
private List<String> devCategoryCodes; private List<String> devCategoryCodes;
>>>>>>> v1.3
/** 医保等级 */ /**
* 医保等级
*/
private Integer chrgitmLv; private Integer chrgitmLv;
/** 仓库药房列表 */ /**
* 仓库药房列表
*/
private List<Long> locationIds; private List<Long> locationIds;
/** 供应商列表 */ /**
* 供应商列表
*/
private List<Long> supplierIds; private List<Long> supplierIds;
/** 是否为零 */ /**
* 是否为零
*/
private Integer zeroFlag; private Integer zeroFlag;
/** 停用状态 */ /**
* 停用状态
*/
private Integer inventoryStatusEnum; private Integer inventoryStatusEnum;
/** 项目所在表 */ /**
* 项目所在表
*/
private String itemTable; private String itemTable;
<<<<<<< HEAD
=======
/** 备份时间 */ /**
* 备份时间
*/
private Date backUpDate; private Date backUpDate;
>>>>>>> v1.3
} }

View File

@@ -6,14 +6,9 @@ package com.openhis.web.inventorymanage.dto;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
<<<<<<< HEAD
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
=======
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import com.core.common.annotation.Excel; import com.core.common.annotation.Excel;
>>>>>>> v1.3
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
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;
@@ -21,11 +16,6 @@ import com.openhis.common.annotation.Dict;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
<<<<<<< HEAD
import org.apache.poi.hpsf.Decimal;
import org.springframework.format.annotation.DateTimeFormat;
=======
>>>>>>> v1.3
/** /**
* 单据分页列表 dto * 单据分页列表 dto
@@ -37,24 +27,34 @@ import org.springframework.format.annotation.DateTimeFormat;
@Accessors(chain = true) @Accessors(chain = true)
public class ReceiptPageDto { public class ReceiptPageDto {
/** 单据号 */ /**
* 单据号
*/
@Excel(name = "单据号", sort = 1) @Excel(name = "单据号", sort = 1)
private String supplyBusNo; private String supplyBusNo;
/** 状态 */ /**
* 状态
*/
private Integer statusEnum; private Integer statusEnum;
// @Excel(name = "审批状态", sort = 2) // @Excel(name = "审批状态", sort = 2)
private String statusEnum_enumText; private String statusEnum_enumText;
/** 退货状态 */ /**
* 退货状态
*/
private Integer returnStatus; private Integer returnStatus;
/** 类型 */ /**
* 类型
*/
private Integer typeEnum; private Integer typeEnum;
@Excel(name = "单据类型", sort = 3) @Excel(name = "单据类型", sort = 3)
private String typeEnum_enumText; private String typeEnum_enumText;
/** 供应商 */ /**
* 供应商
*/
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_supplier") @Dict(dictCode = "id", dictText = "name", dictTable = "adm_supplier")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long supplierId; private Long supplierId;
@@ -62,7 +62,9 @@ public class ReceiptPageDto {
@Excel(name = "供应商", sort = 5) @Excel(name = "供应商", sort = 5)
private String supplierIdDictText; private String supplierIdDictText;
/** 目的仓库 */ /**
* 目的仓库
*/
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_location") @Dict(dictCode = "id", dictText = "name", dictTable = "adm_location")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long purposeLocationId; private Long purposeLocationId;
@@ -70,16 +72,22 @@ public class ReceiptPageDto {
@Excel(name = "目的仓库", sort = 6) @Excel(name = "目的仓库", sort = 6)
private String purposeLocationIdDictText; private String purposeLocationIdDictText;
/** 目的仓位 */ /**
* 目的仓位
*/
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_location") @Dict(dictCode = "id", dictText = "name", dictTable = "adm_location")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long purposeLocationStoreId; private Long purposeLocationStoreId;
private String purposeLocationStoreId_dictText; private String purposeLocationStoreId_dictText;
/** 盈亏金额 */ /**
* 盈亏金额
*/
private BigDecimal breakevenPrice; private BigDecimal breakevenPrice;
/** 经手人 */ /**
* 经手人
*/
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner") @Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long practitionerId; private Long practitionerId;
@@ -87,18 +95,24 @@ public class ReceiptPageDto {
@Excel(name = "经手人", sort = 4) @Excel(name = "经手人", sort = 4)
private String practitionerIdDictText; private String practitionerIdDictText;
/** 审批人 */ /**
* 审批人
*/
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner") @Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")
private Long approverId; private Long approverId;
private String approverId_dictText; private String approverId_dictText;
@Excel(name = "审批人", sort = 10) @Excel(name = "审批人", sort = 10)
private String approverIdDictText; private String approverIdDictText;
/** 审批时间 */ /**
* 审批时间
*/
@Excel(name = "审批时间", sort = 11, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "审批时间", sort = 11, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date approvalTime; private Date approvalTime;
/** 申请人 */ /**
* 申请人
*/
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner") @Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long applicantId; private Long applicantId;
@@ -106,38 +120,46 @@ public class ReceiptPageDto {
@Excel(name = "申请人", sort = 8) @Excel(name = "申请人", sort = 8)
private String applicantIdDictText; private String applicantIdDictText;
/** 申请时间 */ /**
* 申请时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
<<<<<<< HEAD
=======
// @Excel(name = "申请时间", sort = 9, dateFormat = "yyyy-MM-dd HH:mm:ss") // @Excel(name = "申请时间", sort = 9, dateFormat = "yyyy-MM-dd HH:mm:ss")
>>>>>>> v1.3
private Date applyTime; private Date applyTime;
/** 制单日期 */ /**
* 制单日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
<<<<<<< HEAD
=======
// @Excel(name = "申请时间", sort = 9, dateFormat = "yyyy-MM-dd HH:mm:ss") // @Excel(name = "申请时间", sort = 9, dateFormat = "yyyy-MM-dd HH:mm:ss")
>>>>>>> v1.3
private Date createTime; private Date createTime;
/** 备注 */ /**
* 备注
*/
private String remake; private String remake;
/** 项目所在表名 */ /**
* 项目所在表名
*/
private String itemTable; private String itemTable;
/** 药品类型 */ /**
* 药品类型
*/
private Integer itemType; private Integer itemType;
/** 目的仓库类型 */ /**
* 目的仓库类型
*/
private Integer purposeTypeEnum; private Integer purposeTypeEnum;
private String purposeTypeEnum_enumText; private String purposeTypeEnum_enumText;
/** 追溯码 */ /**
* 追溯码
*/
private String traceNo; private String traceNo;
/** /**
* 24、药品 * 24、药品
@@ -148,12 +170,8 @@ public class ReceiptPageDto {
/* /*
* 总金额 * 总金额
*/ */
<<<<<<< HEAD
private BigDecimal totalAmount;
=======
@Excel(name = "总金额", sort = 7, scale = 2) @Excel(name = "总金额", sort = 7, scale = 2)
private BigDecimal totalAmount; private BigDecimal totalAmount;
private String totalAmountText; private String totalAmountText;
>>>>>>> v1.3
} }

View File

@@ -9,10 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.adjustprice.dto.ChangePricePageDto; import com.openhis.web.adjustprice.dto.ChangePricePageDto;
import com.openhis.web.inventorymanage.dto.ReceiptApprovalSearchParam; import com.openhis.web.inventorymanage.dto.ReceiptApprovalSearchParam;
import com.openhis.web.inventorymanage.dto.ReceiptPageDto; import com.openhis.web.inventorymanage.dto.ReceiptPageDto;
<<<<<<< HEAD
=======
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
>>>>>>> v1.3
/** /**
* @ClassName AdjustPriceMapper * @ClassName AdjustPriceMapper
@@ -20,13 +17,11 @@ import org.springframework.stereotype.Repository;
* @Author raymond * @Author raymond
* @Date 2025/10/23 14:41 * @Date 2025/10/23 14:41
* @Version 1.0 * @Version 1.0
**/ *
<<<<<<< HEAD */
@Component
=======
@Repository @Repository
>>>>>>> v1.3
public interface InventoryAdjustPriceMapper { public interface InventoryAdjustPriceMapper {
/** /**
* 查询单据审批分页列表 * 查询单据审批分页列表
* *

View File

@@ -3,11 +3,8 @@
*/ */
package com.openhis.web.inventorymanage.mapper; package com.openhis.web.inventorymanage.mapper;
<<<<<<< HEAD
=======
import java.util.List; import java.util.List;
>>>>>>> v1.3
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -40,29 +37,16 @@ public interface ProductDetailAppMapper {
@Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper, @Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper,
@Param("medMedicationDefinition") String medMedicationDefinition, @Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition, @Param("lotNumberCost") String lotNumberCost); @Param("admDeviceDefinition") String admDeviceDefinition, @Param("lotNumberCost") String lotNumberCost);
<<<<<<< HEAD
/**
* 查询库存商品明细分页列表,联查数据字典
*
* @param page 分页
=======
/** /**
* 查询库存商品明细分页列表,联查数据字典翻译单位字段 * 查询库存商品明细分页列表,联查数据字典翻译单位字段
* *
>>>>>>> v1.3
* @param queryWrapper 查询条件 * @param queryWrapper 查询条件
* @param medMedicationDefinition 药品 * @param medMedicationDefinition 药品
* @param admDeviceDefinition 耗材 * @param admDeviceDefinition 耗材
* @param lotNumberCost 批号进价 * @param lotNumberCost 批号进价
* @return 库存商品明细分页列表 * @return 库存商品明细分页列表
*/ */
<<<<<<< HEAD
Page<ProductDetailPageDto> selectProductDetailsPageX(@Param("page") Page<ProductDetailPageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition, @Param("lotNumberCost") String lotNumberCost);
=======
List<ProductDetailPageDto> getProductDetailPageAndTranslateField( List<ProductDetailPageDto> getProductDetailPageAndTranslateField(
@Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper, @Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper,
@Param("medMedicationDefinition") String medMedicationDefinition, @Param("medMedicationDefinition") String medMedicationDefinition,
@@ -77,5 +61,4 @@ public interface ProductDetailAppMapper {
*/ */
Page<ProductDetailPageDto> selectProductDetailsBackupPage(@Param("page") Page<ProductDetailPageDto> page, Page<ProductDetailPageDto> selectProductDetailsBackupPage(@Param("page") Page<ProductDetailPageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper); @Param(Constants.WRAPPER) QueryWrapper<ProductDetailSearchParam> queryWrapper);
>>>>>>> v1.3
} }

View File

@@ -74,13 +74,10 @@ public interface IGfStudentListAppService {
* @param response 响应 * @param response 响应
*/ */
void importTemplate(HttpServletResponse response); void importTemplate(HttpServletResponse response);
<<<<<<< HEAD
=======
/** /**
* peis数据同步 * peis数据同步
*/ */
R<?> synPeis(); R<?> synPeis();
>>>>>>> v1.3
} }

View File

@@ -5,10 +5,7 @@ import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
<<<<<<< HEAD
=======
import com.core.common.enums.DelFlag; import com.core.common.enums.DelFlag;
>>>>>>> v1.3
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -19,10 +16,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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;
<<<<<<< HEAD
import com.core.common.enums.DeleteFlag;
=======
>>>>>>> v1.3
import com.core.common.utils.AssignSeqUtil; import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.DateUtils; import com.core.common.utils.DateUtils;
import com.core.common.utils.SecurityUtils; import com.core.common.utils.SecurityUtils;
@@ -125,36 +118,36 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
String ybNo = null; String ybNo = null;
if (GfItemType.MEDICATION.getValue().equals(gfRatioApplication.getItemType())) { if (GfItemType.MEDICATION.getValue().equals(gfRatioApplication.getItemType())) {
// 如果是药品,获取并设置药品定义信息 // 如果是药品,获取并设置药品定义信息
MedicationDefinition medicationDefinition = MedicationDefinition medicationDefinition
medicationDefinitionService.getById(gfRatioApplication.getDefinitionId()); = medicationDefinitionService.getById(gfRatioApplication.getDefinitionId());
if (medicationDefinition != null) { if (medicationDefinition != null) {
gfRatioApplicationRecordDto.setBusNo(medicationDefinition.getBusNo()) gfRatioApplicationRecordDto.setBusNo(medicationDefinition.getBusNo())
.setName(medicationDefinition.getName()).setYbNo(medicationDefinition.getYbNo()) .setName(medicationDefinition.getName()).setYbNo(medicationDefinition.getYbNo())
// 公费项目分类:药品 // 公费项目分类:药品
.setItemTypeName(GfItemType.MEDICATION.getInfo()); .setItemTypeName(GfItemType.MEDICATION.getInfo());
chrgitmLv = chrgitmLv
Optional.of(medicationDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue()).toString(); = Optional.of(medicationDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue()).toString();
ybNo = medicationDefinition.getYbNo(); ybNo = medicationDefinition.getYbNo();
} }
} else if (GfItemType.ACTIVITY.getValue().equals(gfRatioApplication.getItemType())) { } else if (GfItemType.ACTIVITY.getValue().equals(gfRatioApplication.getItemType())) {
// 如果是诊疗,获取并设置诊疗定义信息 // 如果是诊疗,获取并设置诊疗定义信息
ActivityDefinition activityDefinition = ActivityDefinition activityDefinition
activityDefinitionService.getById(gfRatioApplication.getDefinitionId()); = activityDefinitionService.getById(gfRatioApplication.getDefinitionId());
if (activityDefinition != null) { if (activityDefinition != null) {
gfRatioApplicationRecordDto.setBusNo(activityDefinition.getBusNo()) gfRatioApplicationRecordDto.setBusNo(activityDefinition.getBusNo())
.setName(activityDefinition.getName()).setYbNo(activityDefinition.getYbNo()) .setName(activityDefinition.getName()).setYbNo(activityDefinition.getYbNo())
// 公费项目分类:诊疗 // 公费项目分类:诊疗
.setItemTypeName(GfItemType.ACTIVITY.getInfo()); .setItemTypeName(GfItemType.ACTIVITY.getInfo());
chrgitmLv = chrgitmLv
Optional.of(activityDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue()).toString(); = Optional.of(activityDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue()).toString();
ybNo = activityDefinition.getYbNo(); ybNo = activityDefinition.getYbNo();
} }
defTableName = CommonConstants.TableName.WOR_ACTIVITY_DEFINITION; defTableName = CommonConstants.TableName.WOR_ACTIVITY_DEFINITION;
} }
YbChrgitmLv ybChrgitmLv = YbChrgitmLv.getByCode(chrgitmLv); YbChrgitmLv ybChrgitmLv = YbChrgitmLv.getByCode(chrgitmLv);
// 查询原支付比例 // 查询原支付比例
Pair<Pair<BigDecimal, BigDecimal>, BigDecimal> oldRatiosAndPrice = Pair<Pair<BigDecimal, BigDecimal>, BigDecimal> oldRatiosAndPrice
this.getOldRatiosAndPrice(gfRatioApplication.getDefinitionId(), defTableName, chrgitmLv); = this.getOldRatiosAndPrice(gfRatioApplication.getDefinitionId(), defTableName, chrgitmLv);
// Dto赋值返回 // Dto赋值返回
gfRatioApplicationRecordDto.setId(gfRatioApplication.getId()).setApplicationNo(gfRatioApplication.getBusNo()) gfRatioApplicationRecordDto.setId(gfRatioApplication.getId()).setApplicationNo(gfRatioApplication.getBusNo())
.setItemType(gfRatioApplication.getItemType()) .setItemType(gfRatioApplication.getItemType())
@@ -201,11 +194,7 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
// 查询指定项目现行比例 // 查询指定项目现行比例
List<GfRatio> gfRatioList = gfRatioService.list(new LambdaQueryWrapper<GfRatio>() List<GfRatio> gfRatioList = gfRatioService.list(new LambdaQueryWrapper<GfRatio>()
.eq(GfRatio::getDefinitionId, gfRatioApplicationRecordDto.getDefinitionId()) .eq(GfRatio::getDefinitionId, gfRatioApplicationRecordDto.getDefinitionId())
<<<<<<< HEAD
.eq(GfRatio::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode())); .eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
// 验证时间是否重叠 // 验证时间是否重叠
if (!gfRatioList.isEmpty()) { if (!gfRatioList.isEmpty()) {
for (GfRatio r : gfRatioList) { for (GfRatio r : gfRatioList) {
@@ -469,8 +458,8 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
return R.ok(Collections.emptyList()); return R.ok(Collections.emptyList());
} }
// 查询要打印的申请单 // 查询要打印的申请单
List<GfRatioApplication> applicationList = List<GfRatioApplication> applicationList
gfRatioApplicationService.list(new LambdaQueryWrapper<GfRatioApplication>() = gfRatioApplicationService.list(new LambdaQueryWrapper<GfRatioApplication>()
.in(GfRatioApplication::getId, idList).orderByDesc(GfRatioApplication::getId)); .in(GfRatioApplication::getId, idList).orderByDesc(GfRatioApplication::getId));
if (applicationList.isEmpty()) { if (applicationList.isEmpty()) {
return R.ok(Collections.emptyList()); return R.ok(Collections.emptyList());
@@ -485,8 +474,8 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
String defTableName = CommonConstants.TableName.MED_MEDICATION_DEFINITION; String defTableName = CommonConstants.TableName.MED_MEDICATION_DEFINITION;
if (GfItemType.MEDICATION.getValue().equals(application.getItemType())) { if (GfItemType.MEDICATION.getValue().equals(application.getItemType())) {
// 获取药品名称和医保等级 // 获取药品名称和医保等级
MedicationDefinition medicationDefinition = MedicationDefinition medicationDefinition
medicationDefinitionService.getById(application.getDefinitionId()); = medicationDefinitionService.getById(application.getDefinitionId());
if (medicationDefinition != null) { if (medicationDefinition != null) {
itemName = medicationDefinition.getName(); itemName = medicationDefinition.getName();
ybLv = Optional.of(medicationDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue()) ybLv = Optional.of(medicationDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue())
@@ -494,8 +483,8 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
} }
} else if (GfItemType.ACTIVITY.getValue().equals(application.getItemType())) { } else if (GfItemType.ACTIVITY.getValue().equals(application.getItemType())) {
// 获取诊疗名称和医保等级 // 获取诊疗名称和医保等级
ActivityDefinition activityDefinition = ActivityDefinition activityDefinition
activityDefinitionService.getById(application.getDefinitionId()); = activityDefinitionService.getById(application.getDefinitionId());
if (activityDefinition != null) { if (activityDefinition != null) {
itemName = activityDefinition.getName(); itemName = activityDefinition.getName();
ybLv = Optional.of(activityDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue()) ybLv = Optional.of(activityDefinition.getChrgitmLv()).orElse(YbChrgitmLv.SELF_PAY.getValue())
@@ -505,8 +494,8 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
} }
YbChrgitmLv ybChrgitmLv = YbChrgitmLv.getByCode(ybLv); YbChrgitmLv ybChrgitmLv = YbChrgitmLv.getByCode(ybLv);
// 查询原支付比例和价格(包括二次比例) // 查询原支付比例和价格(包括二次比例)
Pair<Pair<BigDecimal, BigDecimal>, BigDecimal> oldRatiosAndPrice = Pair<Pair<BigDecimal, BigDecimal>, BigDecimal> oldRatiosAndPrice
this.getOldRatiosAndPrice(application.getDefinitionId(), defTableName, ybLv); = this.getOldRatiosAndPrice(application.getDefinitionId(), defTableName, ybLv);
BigDecimal oldRatio = oldRatiosAndPrice.getLeft().getLeft(); BigDecimal oldRatio = oldRatiosAndPrice.getLeft().getLeft();
BigDecimal oldTwiceRatio = oldRatiosAndPrice.getLeft().getRight(); BigDecimal oldTwiceRatio = oldRatiosAndPrice.getLeft().getRight();
BigDecimal totalPrice = oldRatiosAndPrice.getRight(); BigDecimal totalPrice = oldRatiosAndPrice.getRight();
@@ -559,23 +548,15 @@ public class GfRatioApplicationRecordAppServiceImpl implements IGfRatioApplicati
List<GfRatio> typeRatioList = gfRatioService List<GfRatio> typeRatioList = gfRatioService
.list(new LambdaQueryWrapper<GfRatio>().eq(GfRatio::getRatioType, GfRatioType.TYPE_RATIO.getValue()) .list(new LambdaQueryWrapper<GfRatio>().eq(GfRatio::getRatioType, GfRatioType.TYPE_RATIO.getValue())
.eq(GfRatio::getYbClass, chargeItemDefinitionList.get(0).getYbType()).eq(GfRatio::getYbLv, ybLv) .eq(GfRatio::getYbClass, chargeItemDefinitionList.get(0).getYbType()).eq(GfRatio::getYbLv, ybLv)
<<<<<<< HEAD
.eq(GfRatio::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode())); .eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
if (!typeRatioList.isEmpty()) { if (!typeRatioList.isEmpty()) {
oldRatio = typeRatioList.get(0).getSelfRatio(); oldRatio = typeRatioList.get(0).getSelfRatio();
} }
} }
// 查询历史小项比例 // 查询历史小项比例
List<GfRatio> historicalRatioList = List<GfRatio> historicalRatioList
gfRatioService.list(new LambdaQueryWrapper<GfRatio>().eq(GfRatio::getDefinitionId, definitionId) = gfRatioService.list(new LambdaQueryWrapper<GfRatio>().eq(GfRatio::getDefinitionId, definitionId)
<<<<<<< HEAD
.eq(GfRatio::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()).orderByDesc(GfRatio::getId));
=======
.eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode()).orderByDesc(GfRatio::getId)); .eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode()).orderByDesc(GfRatio::getId));
>>>>>>> v1.3
BigDecimal oldTwiceRatio = null; BigDecimal oldTwiceRatio = null;
if (!historicalRatioList.isEmpty()) { if (!historicalRatioList.isEmpty()) {
GfRatio latestRatio = historicalRatioList.get(0); GfRatio latestRatio = historicalRatioList.get(0);

View File

@@ -12,11 +12,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;
<<<<<<< HEAD
import com.core.common.enums.DeleteFlag;
=======
import com.core.common.enums.DelFlag; import com.core.common.enums.DelFlag;
>>>>>>> v1.3
import com.openhis.common.enums.GfItemType; import com.openhis.common.enums.GfItemType;
import com.openhis.common.enums.GfRatioType; import com.openhis.common.enums.GfRatioType;
import com.openhis.common.enums.ybenums.YbChrgitmLv; import com.openhis.common.enums.ybenums.YbChrgitmLv;
@@ -63,14 +59,10 @@ public class GfRatioManageAppServiceImpl implements IGfRatioManageAppService {
// 查询DB中的所有大项比例 // 查询DB中的所有大项比例
List<GfRatio> gfRatioList = gfRatioService List<GfRatio> gfRatioList = gfRatioService
.list(new LambdaQueryWrapper<GfRatio>().eq(GfRatio::getRatioType, GfRatioType.TYPE_RATIO.getValue()) .list(new LambdaQueryWrapper<GfRatio>().eq(GfRatio::getRatioType, GfRatioType.TYPE_RATIO.getValue())
<<<<<<< HEAD
.eq(GfRatio::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode())); .eq(GfRatio::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
// 做成医保分项+医保等级拼接的Map // 做成医保分项+医保等级拼接的Map
Map<String, GfRatio> gfRatioMap = Map<String, GfRatio> gfRatioMap
gfRatioList.stream().collect(Collectors.toMap(e -> e.getYbClass() + e.getYbLv(), Function.identity())); = gfRatioList.stream().collect(Collectors.toMap(e -> e.getYbClass() + e.getYbLv(), Function.identity()));
// 遍历输入项 // 遍历输入项
List<GfRatio> addGfRatioList = new ArrayList<>(); List<GfRatio> addGfRatioList = new ArrayList<>();
List<GfRatio> editGfRatioList = new ArrayList<>(); List<GfRatio> editGfRatioList = new ArrayList<>();
@@ -116,8 +108,8 @@ public class GfRatioManageAppServiceImpl implements IGfRatioManageAppService {
QueryWrapper<GfIndividualRatioDto> queryWrapper = HisQueryUtils.buildQueryWrapper(searchParam, searchKey, QueryWrapper<GfIndividualRatioDto> queryWrapper = HisQueryUtils.buildQueryWrapper(searchParam, searchKey,
new HashSet<>(Set.of("bus_no", "name", "py_str", "wb_str", "yb_no")), null); new HashSet<>(Set.of("bus_no", "name", "py_str", "wb_str", "yb_no")), null);
// 查询单项比例分页 // 查询单项比例分页
IPage<GfIndividualRatioDto> page = IPage<GfIndividualRatioDto> page
gfRatioManageAppMapper.selectGfIndividualRatioPage(new Page<>(pageNo, pageSize), queryWrapper); = gfRatioManageAppMapper.selectGfIndividualRatioPage(new Page<>(pageNo, pageSize), queryWrapper);
// 设置公费项目分类名称 // 设置公费项目分类名称
for (GfIndividualRatioDto dto : page.getRecords()) { for (GfIndividualRatioDto dto : page.getRecords()) {
dto.setItemTypeName(GfItemType.getByValue(dto.getItemType()).getInfo()); dto.setItemTypeName(GfItemType.getByValue(dto.getItemType()).getInfo());

View File

@@ -1,13 +1,5 @@
package com.openhis.web.nenu.appservice.impl; package com.openhis.web.nenu.appservice.impl;
<<<<<<< HEAD
import java.time.format.DateTimeParseException;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
=======
import java.io.IOException; import java.io.IOException;
import java.time.format.DateTimeParseException; import java.time.format.DateTimeParseException;
import java.util.*; import java.util.*;
@@ -34,7 +26,6 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
>>>>>>> v1.3
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 org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -45,11 +36,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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;
<<<<<<< HEAD
import com.core.common.enums.DeleteFlag;
=======
import com.core.common.enums.DelFlag; import com.core.common.enums.DelFlag;
>>>>>>> v1.3
import com.core.common.utils.*; import com.core.common.utils.*;
import com.core.common.utils.poi.ExcelUtil; import com.core.common.utils.poi.ExcelUtil;
import com.openhis.administration.domain.Patient; import com.openhis.administration.domain.Patient;
@@ -101,8 +88,8 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
QueryWrapper<GfStudentListDto> queryWrapper = HisQueryUtils.buildQueryWrapper(searchParam, searchKey, QueryWrapper<GfStudentListDto> queryWrapper = HisQueryUtils.buildQueryWrapper(searchParam, searchKey,
new HashSet<>(Set.of("name", "py_str", "wb_str", "student_id", "id_number")), null); new HashSet<>(Set.of("name", "py_str", "wb_str", "student_id", "id_number")), null);
// 查询学生名单分页 // 查询学生名单分页
IPage<GfStudentListDto> page = IPage<GfStudentListDto> page
gfStudentListAppMapper.selectGfStudentListPage(new Page<>(pageNo, pageSize), queryWrapper); = gfStudentListAppMapper.selectGfStudentListPage(new Page<>(pageNo, pageSize), queryWrapper);
return R.ok(page); return R.ok(page);
} }
@@ -144,22 +131,14 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
// 学号重复验证 // 学号重复验证
List<PatientStudent> sameStudentIdStudents = patientStudentService.list( List<PatientStudent> sameStudentIdStudents = patientStudentService.list(
new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getStudentId, gfStudentListDto.getStudentId()) new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getStudentId, gfStudentListDto.getStudentId())
<<<<<<< HEAD
.eq(PatientStudent::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode())); .eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
if (!sameStudentIdStudents.isEmpty()) { if (!sameStudentIdStudents.isEmpty()) {
return R.fail("学号" + gfStudentListDto.getStudentId() + "在系统中已存在"); return R.fail("学号" + gfStudentListDto.getStudentId() + "在系统中已存在");
} }
// 学生信息重复校验 // 学生信息重复校验
List<PatientStudent> sameIdNumberStudents = patientStudentService.list( List<PatientStudent> sameIdNumberStudents = patientStudentService.list(
new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getIdNumber, gfStudentListDto.getIdNumber()) new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getIdNumber, gfStudentListDto.getIdNumber())
<<<<<<< HEAD
.eq(PatientStudent::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode())); .eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
Long existingPatientId = null; Long existingPatientId = null;
if (!sameIdNumberStudents.isEmpty()) { if (!sameIdNumberStudents.isEmpty()) {
for (PatientStudent ps : sameIdNumberStudents) { for (PatientStudent ps : sameIdNumberStudents) {
@@ -186,18 +165,14 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
// 判断患者信息是否有重复 // 判断患者信息是否有重复
List<Patient> sameIdNumberPatients = patientService List<Patient> sameIdNumberPatients = patientService
.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, gfStudentListDto.getIdNumber()) .list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, gfStudentListDto.getIdNumber())
<<<<<<< HEAD
.eq(Patient::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(Patient::getDeleteFlag, DelFlag.NO.getCode())); .eq(Patient::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
if (!sameIdNumberPatients.isEmpty()) { if (!sameIdNumberPatients.isEmpty()) {
// 已存在则取存在的 // 已存在则取存在的
existingPatientId = sameIdNumberPatients.get(0).getId(); existingPatientId = sameIdNumberPatients.get(0).getId();
} else { } else {
// 不存在则新建患者 // 不存在则新建患者
Patient patient = Patient patient
new Patient().setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10)) = new Patient().setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10))
.setName(gfStudentListDto.getName()).setGenderEnum(gfStudentListDto.getGender()) .setName(gfStudentListDto.getName()).setGenderEnum(gfStudentListDto.getGender())
.setBirthDate(birthDate).setPhone(gfStudentListDto.getPhone()) .setBirthDate(birthDate).setPhone(gfStudentListDto.getPhone())
.setIdCard(gfStudentListDto.getIdNumber()).setPyStr(pyStr).setWbStr(wbStr) .setIdCard(gfStudentListDto.getIdNumber()).setPyStr(pyStr).setWbStr(wbStr)
@@ -283,11 +258,7 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
@Override @Override
public R<?> delete(Long id) { public R<?> delete(Long id) {
patientStudentService.update(new LambdaUpdateWrapper<PatientStudent>() patientStudentService.update(new LambdaUpdateWrapper<PatientStudent>()
<<<<<<< HEAD
.set(PatientStudent::getDeleteFlag, DeleteFlag.DELETED.getCode()).eq(PatientStudent::getId, id));
=======
.set(PatientStudent::getDeleteFlag, DelFlag.YES.getCode()).eq(PatientStudent::getId, id)); .set(PatientStudent::getDeleteFlag, DelFlag.YES.getCode()).eq(PatientStudent::getId, id));
>>>>>>> v1.3
return R.ok(); return R.ok();
} }
@@ -300,8 +271,8 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
@Override @Override
public R<?> importData(MultipartFile file) { public R<?> importData(MultipartFile file) {
// 读取文件 // 读取文件
R<List<GfStudentListImportDto>> readResult = R<List<GfStudentListImportDto>> readResult
CommonUtil.readImportedExcelFile(file, GfStudentListImportDto.class); = CommonUtil.readImportedExcelFile(file, GfStudentListImportDto.class);
if (R.SUCCESS != readResult.getCode()) { if (R.SUCCESS != readResult.getCode()) {
return readResult; return readResult;
} }
@@ -327,8 +298,8 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
String wbStr = ChineseConvertUtils.toWBFirstLetter(importDto.getName()); String wbStr = ChineseConvertUtils.toWBFirstLetter(importDto.getName());
// 患者未创建时,创建患者 // 患者未创建时,创建患者
if (importDto.getPatientId() == null) { if (importDto.getPatientId() == null) {
Patient patient = Patient patient
new Patient().setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10)) = new Patient().setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10))
.setName(importDto.getName()).setGenderEnum(CommonUtil.tryParseInt(importDto.getGender())) .setName(importDto.getName()).setGenderEnum(CommonUtil.tryParseInt(importDto.getGender()))
.setBirthDate(birthDate).setPhone(importDto.getPhone()).setIdCard(importDto.getIdNumber()) .setBirthDate(birthDate).setPhone(importDto.getPhone()).setIdCard(importDto.getIdNumber())
.setPyStr(pyStr).setWbStr(wbStr).setOrganizationId(orgId); .setPyStr(pyStr).setWbStr(wbStr).setOrganizationId(orgId);
@@ -439,8 +410,8 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
} }
// 重复校验(文件行重复) // 重复校验(文件行重复)
List<String> lineRepeatedValidateMsgList = new ArrayList<>(); List<String> lineRepeatedValidateMsgList = new ArrayList<>();
Map<String, List<GfStudentListImportDto>> fileSameStudentIdMap = Map<String, List<GfStudentListImportDto>> fileSameStudentIdMap
importDtoList.stream().collect(Collectors.groupingBy(GfStudentListImportDto::getStudentId)); = importDtoList.stream().collect(Collectors.groupingBy(GfStudentListImportDto::getStudentId));
for (Map.Entry<String, List<GfStudentListImportDto>> entry : fileSameStudentIdMap.entrySet()) { for (Map.Entry<String, List<GfStudentListImportDto>> entry : fileSameStudentIdMap.entrySet()) {
if (entry.getValue().size() > 1) { if (entry.getValue().size() > 1) {
lineRepeatedValidateMsgList lineRepeatedValidateMsgList
@@ -448,8 +419,8 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
.map(Object::toString).collect(Collectors.joining(",")) + "行的学号重复;"); .map(Object::toString).collect(Collectors.joining(",")) + "行的学号重复;");
} }
} }
Map<String, List<GfStudentListImportDto>> fileSameIdNumberMap = Map<String, List<GfStudentListImportDto>> fileSameIdNumberMap
importDtoList.stream().collect(Collectors.groupingBy(GfStudentListImportDto::getIdNumber)); = importDtoList.stream().collect(Collectors.groupingBy(GfStudentListImportDto::getIdNumber));
for (Map.Entry<String, List<GfStudentListImportDto>> entry : fileSameIdNumberMap.entrySet()) { for (Map.Entry<String, List<GfStudentListImportDto>> entry : fileSameIdNumberMap.entrySet()) {
if (entry.getValue().size() > 1) { if (entry.getValue().size() > 1) {
lineRepeatedValidateMsgList lineRepeatedValidateMsgList
@@ -465,21 +436,13 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
for (GfStudentListImportDto importDto : importDtoList) { for (GfStudentListImportDto importDto : importDtoList) {
List<PatientStudent> sameStudentIdStudents = patientStudentService.list( List<PatientStudent> sameStudentIdStudents = patientStudentService.list(
new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getStudentId, importDto.getStudentId()) new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getStudentId, importDto.getStudentId())
<<<<<<< HEAD
.eq(PatientStudent::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode())); .eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
if (!sameStudentIdStudents.isEmpty()) { if (!sameStudentIdStudents.isEmpty()) {
dbRepeatedValidateMsgList.add("■ 第" + importDto.getLineNumber() + "行的学号在系统中已存在;"); dbRepeatedValidateMsgList.add("■ 第" + importDto.getLineNumber() + "行的学号在系统中已存在;");
} }
List<PatientStudent> sameIdNumberStudents = patientStudentService List<PatientStudent> sameIdNumberStudents = patientStudentService
.list(new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getIdNumber, importDto.getIdNumber()) .list(new LambdaQueryWrapper<PatientStudent>().eq(PatientStudent::getIdNumber, importDto.getIdNumber())
<<<<<<< HEAD
.eq(PatientStudent::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
=======
.eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode())); .eq(PatientStudent::getDeleteFlag, DelFlag.NO.getCode()));
>>>>>>> v1.3
if (!sameIdNumberStudents.isEmpty()) { if (!sameIdNumberStudents.isEmpty()) {
for (PatientStudent ps : sameIdNumberStudents) { for (PatientStudent ps : sameIdNumberStudents) {
if (!ps.getEnrollmentDate().after(importDto.getGraduationDate()) if (!ps.getEnrollmentDate().after(importDto.getGraduationDate())
@@ -497,8 +460,6 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
return R.ok(); return R.ok();
} }
<<<<<<< HEAD
=======
@Override @Override
public R<?> synPeis() { public R<?> synPeis() {
@@ -512,7 +473,6 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
} }
//log.info("开始传输学生数据,总记录数: {}", totalCount); //log.info("开始传输学生数据,总记录数: {}", totalCount);
// 2. 分批处理参数 // 2. 分批处理参数
int pageSize = 1000; // 每批大小 int pageSize = 1000; // 每批大小
int pageNum = 1; int pageNum = 1;
@@ -645,5 +605,4 @@ public class GfStudentListAppServiceImpl implements IGfStudentListAppService {
// 可以根据业务需求决定是否重试 // 可以根据业务需求决定是否重试
} }
>>>>>>> v1.3
} }

View File

@@ -105,8 +105,6 @@ public class GfStudentListController {
public void importTemplate(HttpServletResponse response) { public void importTemplate(HttpServletResponse response) {
gfStudentListAppService.importTemplate(response); gfStudentListAppService.importTemplate(response);
} }
<<<<<<< HEAD
=======
/** /**
* peis同步 * peis同步
@@ -116,5 +114,4 @@ public class GfStudentListController {
public R<?> synPeis() { public R<?> synPeis() {
return gfStudentListAppService.synPeis(); return gfStudentListAppService.synPeis();
} }
>>>>>>> v1.3
} }

View File

@@ -1,9 +1,6 @@
package com.openhis.web.nenu.mapper; package com.openhis.web.nenu.mapper;
<<<<<<< HEAD
=======
import com.openhis.web.nenu.dto.GfStudentPeisDto; import com.openhis.web.nenu.dto.GfStudentPeisDto;
>>>>>>> v1.3
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -13,11 +10,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.nenu.dto.GfStudentListDto; import com.openhis.web.nenu.dto.GfStudentListDto;
<<<<<<< HEAD
=======
import java.util.List; import java.util.List;
>>>>>>> v1.3
/** /**
* 公费医疗-学生名单管理 Mapper * 公费医疗-学生名单管理 Mapper
* *
@@ -37,14 +31,13 @@ public interface GfStudentListAppMapper {
IPage<GfStudentListDto> selectGfStudentListPage(@Param("page") Page<GfStudentListDto> page, IPage<GfStudentListDto> selectGfStudentListPage(@Param("page") Page<GfStudentListDto> page,
@Param(Constants.WRAPPER) QueryWrapper<GfStudentListDto> queryWrapper); @Param(Constants.WRAPPER) QueryWrapper<GfStudentListDto> queryWrapper);
<<<<<<< HEAD
=======
/** /**
* 获取学生名单peis同步列表 * 获取学生名单peis同步列表
* *
* @return 学生名单peis同步列表 * @return 学生名单peis同步列表
*/ */
List<GfStudentPeisDto> getPatientBusNoList(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize); List<GfStudentPeisDto> getPatientBusNoList(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
/** /**
* 获取学生名单peis同步列表 * 获取学生名单peis同步列表
* *
@@ -59,5 +52,4 @@ public interface GfStudentListAppMapper {
*/ */
Long getPatientBusNoCount(); Long getPatientBusNoCount();
>>>>>>> v1.3
} }

View File

@@ -137,12 +137,12 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
searchFields.add(CommonConstants.FieldName.PatientPyStr); searchFields.add(CommonConstants.FieldName.PatientPyStr);
searchFields.add(CommonConstants.FieldName.PatientWbStr); searchFields.add(CommonConstants.FieldName.PatientWbStr);
// 构建查询条件 // 构建查询条件
QueryWrapper<OutpatientTreatmentEncounterDto> queryWrapper = QueryWrapper<OutpatientTreatmentEncounterDto> queryWrapper
HisQueryUtils.buildQueryWrapper(outpatientTreatmentEncounterDto, searchKey, searchFields, request); = HisQueryUtils.buildQueryWrapper(outpatientTreatmentEncounterDto, searchKey, searchFields, request);
// 查询就诊病人列表 // 查询就诊病人列表
Page<OutpatientTreatmentEncounterDto> encounterInfoPageDto = Page<OutpatientTreatmentEncounterDto> encounterInfoPageDto
outpatientTreatmentAppMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper, = outpatientTreatmentAppMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.AMB.getValue(), RequestStatus.COMPLETED.getValue(), RequestStatus.CANCELLED.getValue()); EncounterClass.AMB.getValue(), RequestStatus.COMPLETED.getValue(), RequestStatus.CANCELLED.getValue());
encounterInfoPageDto.getRecords().forEach(prescriptionPatientInfoDto -> { encounterInfoPageDto.getRecords().forEach(prescriptionPatientInfoDto -> {
// 性别 // 性别
@@ -167,8 +167,8 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
public R<?> getOutpatientTreatmentInfo(OutpatientTreatmentInfoDto outpatientTreatmentInfoDto, Integer pageNo, public R<?> getOutpatientTreatmentInfo(OutpatientTreatmentInfoDto outpatientTreatmentInfoDto, Integer pageNo,
Integer pageSize) { Integer pageSize) {
// 构建查询条件 // 构建查询条件
QueryWrapper<OutpatientTreatmentInfoDto> queryWrapper = QueryWrapper<OutpatientTreatmentInfoDto> queryWrapper
HisQueryUtils.buildQueryWrapper(outpatientTreatmentInfoDto, null, null, null); = HisQueryUtils.buildQueryWrapper(outpatientTreatmentInfoDto, null, null, null);
// 查询处置单 // 查询处置单
IPage<OutpatientTreatmentInfoDto> treatmentInfo = outpatientTreatmentAppMapper.selectTreatmentInfoPage( IPage<OutpatientTreatmentInfoDto> treatmentInfo = outpatientTreatmentAppMapper.selectTreatmentInfoPage(
@@ -178,8 +178,8 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
List<OutpatientTreatmentInfoDto> treatmentList = treatmentInfo.getRecords(); List<OutpatientTreatmentInfoDto> treatmentList = treatmentInfo.getRecords();
// 获取请求ids // 获取请求ids
List<Long> reqIds = List<Long> reqIds
treatmentList.stream().map(OutpatientTreatmentInfoDto::getRequestId).collect(Collectors.toList()); = treatmentList.stream().map(OutpatientTreatmentInfoDto::getRequestId).collect(Collectors.toList());
Map<Long, List<Procedure>> procedureRecordGroup = new HashMap<>(); Map<Long, List<Procedure>> procedureRecordGroup = new HashMap<>();
if (!reqIds.isEmpty()) { if (!reqIds.isEmpty()) {
// 查询执行记录 // 查询执行记录
@@ -275,8 +275,8 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
throw new ServiceException("未找到对应的收费项,请联系管理员"); throw new ServiceException("未找到对应的收费项,请联系管理员");
} }
// 按requestId分组收费项 // 按requestId分组收费项
Map<Long, List<ChargeItem>> chargeItemMap = Map<Long, List<ChargeItem>> chargeItemMap
chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getServiceId)); = chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getServiceId));
// 过滤出已收费的执行项目 // 过滤出已收费的执行项目
serviceMedPerformList = serviceMedPerformList.stream().filter(performInfo -> { serviceMedPerformList = serviceMedPerformList.stream().filter(performInfo -> {
List<ChargeItem> chargeItems = chargeItemMap.get(performInfo.getRequestId()); List<ChargeItem> chargeItems = chargeItemMap.get(performInfo.getRequestId());
@@ -299,8 +299,8 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
exeCount = serviceRequest.getQuantity().intValue(); exeCount = serviceRequest.getQuantity().intValue();
} }
} else if (CommonConstants.TableName.MED_MEDICATION_REQUEST.equals(performInfoDto.getRequestTable())) { } else if (CommonConstants.TableName.MED_MEDICATION_REQUEST.equals(performInfoDto.getRequestTable())) {
MedicationRequest medicationRequest = MedicationRequest medicationRequest
medicationRequestService.getById(performInfoDto.getRequestId()); = medicationRequestService.getById(performInfoDto.getRequestId());
if (medicationRequest != null) { if (medicationRequest != null) {
encounterId = medicationRequest.getEncounterId(); encounterId = medicationRequest.getEncounterId();
requestId = medicationRequest.getId(); requestId = medicationRequest.getId();
@@ -352,14 +352,11 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
List<Long> devRequestIdList = devicePerformList.stream().map(PerformInfoDto::getRequestId).toList(); List<Long> devRequestIdList = devicePerformList.stream().map(PerformInfoDto::getRequestId).toList();
// 获取耗材发放id列表 // 获取耗材发放id列表
List<Long> devDispenseIdList = performInfoList.stream().map(PerformInfoDto::getDispenseId).toList(); List<Long> devDispenseIdList = performInfoList.stream().map(PerformInfoDto::getDispenseId).toList();
<<<<<<< HEAD
=======
// 更新请求状态为已完成 // 更新请求状态为已完成
LambdaUpdateWrapper<DeviceRequest> updateWrapper = LambdaUpdateWrapper<DeviceRequest> updateWrapper
new LambdaUpdateWrapper<DeviceRequest>().in(DeviceRequest::getId, devRequestIdList) = new LambdaUpdateWrapper<DeviceRequest>().in(DeviceRequest::getId, devRequestIdList)
.set(DeviceRequest::getStatusEnum, RequestStatus.COMPLETED.getValue()); .set(DeviceRequest::getStatusEnum, RequestStatus.COMPLETED.getValue());
deviceRequestService.update(updateWrapper); deviceRequestService.update(updateWrapper);
>>>>>>> v1.3
// 发耗材信息查询 // 发耗材信息查询
List<DeviceDispense> dispenseList = deviceDispenseService List<DeviceDispense> dispenseList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList)); .list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
@@ -387,55 +384,6 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
} else { } else {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
} }
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(
devUnDispenseIdList, null, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个耗材分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
List<InventoryItem> inventoryItemList = new ArrayList<>();
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(
unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
}
inventoryItemList.add(inventoryItem);
=======
// 获取药品待发放库存信息 // 获取药品待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList = returnMedicineMapper.selectInventoryInfoList( List<UnDispenseInventoryDto> unDispenseInventoryList = returnMedicineMapper.selectInventoryInfoList(
@@ -445,8 +393,7 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
// 库存待更新列表 // 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理 // 根据批号,发放项目,发放药房进行分组处理
Map<String, Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap = unDispenseInventoryList.stream()
List<UnDispenseInventoryDto>> unDispenseInventoryMap = unDispenseInventoryList.stream()
.collect(Collectors.groupingBy(x -> x.getItemId() + CommonConstants.Common.DASH + x.getLotNumber() .collect(Collectors.groupingBy(x -> x.getItemId() + CommonConstants.Common.DASH + x.getLotNumber()
+ CommonConstants.Common.DASH + x.getLocationId())); + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) { if (!unDispenseInventoryMap.isEmpty()) {
@@ -488,29 +435,11 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
inventoryItemList.add(new InventoryItem().setId(inventoryId) inventoryItemList.add(new InventoryItem().setId(inventoryId)
.setQuantity(inventoryQuantity.subtract(minQuantity))); .setQuantity(inventoryQuantity.subtract(minQuantity)));
} }
>>>>>>> v1.3
} }
} }
} }
// 库存更新 // 库存更新
inventoryItemService.updateBatchById(inventoryItemList); inventoryItemService.updateBatchById(inventoryItemList);
<<<<<<< HEAD
// 更新请求状态为已完成
deviceRequestService.updateCompletedStatusBatch(devRequestIdList);
// 调用医保商品销售接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH);
// 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<String> uploadFailedNoList =
westernMedicineDispenseAppServiceImpl.ybMedicineIntegrated(null, devDispenseIdList);
if (uploadFailedNoList != null) {
returnMsg = "3505商品销售上传错误错误项目编码" + uploadFailedNoList;
} else {
returnMsg = "3505商品销售上传成功";
}
}
=======
// // 调用医保商品销售接口 // // 调用医保商品销售接口
// String ybSwitch = // String ybSwitch =
@@ -525,7 +454,6 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
// returnMsg = "3505商品销售上传成功"; // returnMsg = "3505商品销售上传成功";
// } // }
// } // }
>>>>>>> v1.3
} }
return R.ok("执行成功"); return R.ok("执行成功");
} }
@@ -648,45 +576,6 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
// 药品退药请求状态变更(待退药→已完成) // 药品退药请求状态变更(待退药→已完成)
deviceRequestService.updateCompletedStatusBatch(devRefundRequestIdList); deviceRequestService.updateCompletedStatusBatch(devRefundRequestIdList);
<<<<<<< HEAD
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList,
null, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (inventoryList != null && !inventoryList.isEmpty()) {
// 设置库存数量
for (UnDispenseInventoryDto inventory : inventoryList) {
// 库存表项目设定
InventoryItem inventoryItem = new InventoryItem();
// id
inventoryItem.setId(inventory.getInventoryId());
// 库存数量
if (inventory.getDispenseUnit().equals(inventory.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+待退数量
inventoryItem
.setQuantity(inventory.getInventoryQuantity().add(inventory.getDispenseQuantity()));
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+退药数量(拆零比×待退数量)
inventoryItem.setQuantity(inventory.getInventoryQuantity()
.add(inventory.getPartPercent().multiply(inventory.getDispenseQuantity())));
}
inventoryItemList.add(inventoryItem);
}
}
// 库存更新
inventoryItemService.updateBatchById(inventoryItemList);
// 调用医保商品销售退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
if (!devRefundList.isEmpty()) {
List<String> uploadFailedNoList =
returnedMedicineAppServiceImpl.ybReturnIntegrated(new ArrayList<>(), devDispenseIdList);
if (uploadFailedNoList != null) {
returnMsg = "3506商品销售退货上传错误错误项目编码" + uploadFailedNoList;
} else {
returnMsg = "3506商品销售退货上传成功";
=======
// 扣库 // 扣库
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 获取库存信息 // 获取库存信息
@@ -711,7 +600,6 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
.add(inventory.getPartPercent().multiply(inventory.getDispenseQuantity()))); .add(inventory.getPartPercent().multiply(inventory.getDispenseQuantity())));
} }
inventoryItemList.add(inventoryItem); inventoryItemList.add(inventoryItem);
>>>>>>> v1.3
} }
} }
// 库存更新 // 库存更新
@@ -743,8 +631,8 @@ public class OutpatientTreatmentAppServiceImpl implements IOutpatientTreatmentAp
*/ */
@Override @Override
public R<?> getBloodTransfusionPatch(Long requestId) { public R<?> getBloodTransfusionPatch(Long requestId) {
BloodTransfusionPatchDto bloodTransfusionPatch = BloodTransfusionPatchDto bloodTransfusionPatch
outpatientTreatmentAppMapper.getBloodTransfusionPatch(requestId); = outpatientTreatmentAppMapper.getBloodTransfusionPatch(requestId);
// 性别枚举 // 性别枚举
bloodTransfusionPatch.setGenderEnum_enumText( bloodTransfusionPatch.setGenderEnum_enumText(
EnumUtils.getInfoByValue(AdministrativeGender.class, bloodTransfusionPatch.getGenderEnum())); EnumUtils.getInfoByValue(AdministrativeGender.class, bloodTransfusionPatch.getGenderEnum()));

View File

@@ -50,20 +50,9 @@ public interface IPatientInformationService {
R<?> addPatient(PatientBaseInfoDto patientInfoDto); R<?> addPatient(PatientBaseInfoDto patientInfoDto);
/** /**
<<<<<<< HEAD
* 检查患者是否存在
*
* @param name 患者姓名
* @param idCardNo 身份证号
* @return 是否存在
*/
boolean checkPatientExists(String name, String idCardNo);
=======
* 更新患者手机号 * 更新患者手机号
* *
* @param patientBaseInfoDto 患者信息 * @param patientBaseInfoDto 患者信息
*/ */
R<?> updatePatientPhone(PatientBaseInfoDto patientBaseInfoDto); R<?> updatePatientPhone(PatientBaseInfoDto patientBaseInfoDto);
>>>>>>> v1.3
} }

View File

@@ -130,25 +130,16 @@ public class PatientInformationServiceImpl implements IPatientInformationService
@Override @Override
public IPage<PatientBaseInfoDto> getPatientInfo(PatientBaseInfoDto patientBaseInfoDto, String searchKey, public IPage<PatientBaseInfoDto> getPatientInfo(PatientBaseInfoDto patientBaseInfoDto, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request) { Integer pageNo, Integer pageSize, HttpServletRequest request) {
<<<<<<< HEAD
// 构建查询条件 - 添加phone字段到搜索条件中
QueryWrapper<PatientInformationDto> queryWrapper = HisQueryUtils.buildQueryWrapper(
patientInfoSearchParam, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.Name,
CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr,
CommonConstants.FieldName.Phone)), // 添加phone字段支持手机号搜索
=======
// 构建查询条件 // 构建查询条件
QueryWrapper<PatientBaseInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper( QueryWrapper<PatientBaseInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper(
patientBaseInfoDto, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.Name, patientBaseInfoDto, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.Name,
CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr)), CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr)),
>>>>>>> v1.3
request); request);
IPage<PatientBaseInfoDto> patientInformationPage = IPage<PatientBaseInfoDto> patientInformationPage
patientManageMapper.getPatientPage(new Page<>(pageNo, pageSize), queryWrapper); = patientManageMapper.getPatientPage(new Page<>(pageNo, pageSize), queryWrapper);
// 患者id集合 // 患者id集合
List<Long> patientIdList = List<Long> patientIdList
patientInformationPage.getRecords().stream().map(PatientBaseInfoDto::getId).collect(Collectors.toList()); = patientInformationPage.getRecords().stream().map(PatientBaseInfoDto::getId).collect(Collectors.toList());
// 患者身份信息 // 患者身份信息
List<PatientIdInfoDto> patientIdInfo = patientManageMapper.getPatientIdInfo(patientIdList); List<PatientIdInfoDto> patientIdInfo = patientManageMapper.getPatientIdInfo(patientIdList);
// 获取登录者信息 // 获取登录者信息
@@ -194,8 +185,8 @@ public class PatientInformationServiceImpl implements IPatientInformationService
} }
} }
// 身份证号是否存在 // 身份证号是否存在
List<Patient> idCardList = List<Patient> idCardList
patientService.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, patientInfoDto.getIdCard()) = patientService.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, patientInfoDto.getIdCard())
.ne(patientInfoDto.getId() != null, Patient::getId, patientInfoDto.getId())); .ne(patientInfoDto.getId() != null, Patient::getId, patientInfoDto.getId()));
if (!idCardList.isEmpty()) { if (!idCardList.isEmpty()) {
Patient patient = idCardList.get(0); Patient patient = idCardList.get(0);
@@ -245,8 +236,8 @@ public class PatientInformationServiceImpl implements IPatientInformationService
} }
} }
// 身份证号是否存在 // 身份证号是否存在
List<Patient> idCardList = List<Patient> idCardList
patientService.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, patientInfoDto.getIdCard())); = patientService.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, patientInfoDto.getIdCard()));
if (!idCardList.isEmpty()) { if (!idCardList.isEmpty()) {
throw new ServiceException("身份证号:" + patientInfoDto.getIdCard() + "已经存在"); throw new ServiceException("身份证号:" + patientInfoDto.getIdCard() + "已经存在");
} }
@@ -272,18 +263,6 @@ public class PatientInformationServiceImpl implements IPatientInformationService
return R.ok(patient, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[]{"患者信息"})); return R.ok(patient, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[]{"患者信息"}));
} }
<<<<<<< HEAD
@Override
public boolean checkPatientExists(String name, String idCardNo) {
QueryWrapper<Patient> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", name)
.eq("id_card", idCardNo)
.eq("delete_flag", "0");
return patientService.count(queryWrapper) > 0;
}
=======
/** /**
* 处理患者信息 * 处理患者信息
* *
@@ -345,5 +324,4 @@ public class PatientInformationServiceImpl implements IPatientInformationService
} }
return R.fail("更新患者手机号失败"); return R.fail("更新患者手机号失败");
} }
>>>>>>> v1.3
} }

View File

@@ -45,7 +45,9 @@ public class PatientBaseInfoDto {
private Integer genderEnum; private Integer genderEnum;
private String genderEnum_enumText; private String genderEnum_enumText;
/** 活动标记 */ /**
* 活动标记
*/
private Integer activeFlag; private Integer activeFlag;
private Integer activeFlag_enumText; private Integer activeFlag_enumText;
@@ -68,18 +70,7 @@ public class PatientBaseInfoDto {
/** /**
* 联系方式 * 联系方式
*/ */
<<<<<<< HEAD:openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientInformationDto.java
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
private Date deceasedDate;
/**
* 婚姻状态
*/
private Integer maritalStatusEnum;
private String maritalStatusEnum_enumText;
=======
private String phone; private String phone;
>>>>>>> v1.3:openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientBaseInfoDto.java
/** /**
* 职业编码 * 职业编码

View File

@@ -11,14 +11,7 @@ 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.chargemanage.dto.OutpatientRegistrationAddParam; import com.openhis.web.chargemanage.dto.OutpatientRegistrationAddParam;
import com.openhis.web.chargemanage.dto.OutpatientRegistrationSettleParam; import com.openhis.web.chargemanage.dto.OutpatientRegistrationSettleParam;
<<<<<<< HEAD
import com.openhis.web.paymentmanage.dto.CancelPaymentDto;
import com.openhis.web.paymentmanage.dto.InpatientPreSettleResultDto;
import com.openhis.web.paymentmanage.dto.NenuBpcPayDto;
import com.openhis.web.paymentmanage.dto.PaymentVO;
=======
import com.openhis.web.paymentmanage.dto.*; import com.openhis.web.paymentmanage.dto.*;
>>>>>>> v1.3
import com.openhis.yb.dto.PaymentDetailDto; import com.openhis.yb.dto.PaymentDetailDto;
import com.openhis.yb.dto.PaymentDto; import com.openhis.yb.dto.PaymentDto;
import com.openhis.yb.dto.PaymentInpatientDto; import com.openhis.yb.dto.PaymentInpatientDto;
@@ -31,6 +24,7 @@ import com.openhis.yb.dto.PrePaymentDto;
* @date 2025-03-29 * @date 2025-03-29
*/ */
public interface IPaymentRecService { public interface IPaymentRecService {
/** /**
* 付款 * 付款
* *
@@ -139,9 +133,6 @@ public interface IPaymentRecService {
* @return 结果 * @return 结果
*/ */
String nenuBpcPay(NenuBpcPayDto nenuBpcPayDto); String nenuBpcPay(NenuBpcPayDto nenuBpcPayDto);
<<<<<<< HEAD
=======
List<PaymentDetailDto> cancelPreReg(Long encounterId); List<PaymentDetailDto> cancelPreReg(Long encounterId);
>>>>>>> v1.3
} }

View File

@@ -3,11 +3,8 @@ package com.openhis.web.paymentmanage.appservice;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.openhis.yb.dto.ThreePartPayDto; import com.openhis.yb.dto.ThreePartPayDto;
<<<<<<< HEAD
=======
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
>>>>>>> v1.3
/** /**
* 第三方支付应用层Service * 第三方支付应用层Service
* *
@@ -15,11 +12,10 @@ import javax.servlet.http.HttpServletRequest;
* @date 2025-03-29 * @date 2025-03-29
*/ */
public interface ThreePartPayService { public interface ThreePartPayService {
<<<<<<< HEAD
R<?> payFor(ThreePartPayDto threePartPayDto);
=======
/** /**
* 付款 * 付款
*
* @param threePartPayDto 前台参数 * @param threePartPayDto 前台参数
* @return 结果 * @return 结果
*/ */
@@ -27,26 +23,29 @@ public interface ThreePartPayService {
/** /**
* 签到 * 签到
*
* @return 结果 * @return 结果
*/ */
R<?> sign(); R<?> sign();
/** /**
* 签出 * 签出
*
* @return 结果 * @return 结果
*/ */
R<?> signOut(); R<?> signOut();
/** /**
* 支付结果查询 * 支付结果查询
*
* @param id 参数 * @param id 参数
* @return 结果 * @return 结果
*/ */
R<?> payQuery(Long id); R<?> payQuery(Long id);
/** /**
* 当天退费 * 当天退费
*
* @param paymentId 参数 * @param paymentId 参数
* @return 结果 * @return 结果
*/ */
@@ -54,6 +53,7 @@ public interface ThreePartPayService {
/** /**
* 隔天退货 * 隔天退货
*
* @param paymentId 参数 * @param paymentId 参数
* @return 结果 * @return 结果
*/ */
@@ -61,6 +61,7 @@ public interface ThreePartPayService {
/** /**
* 退费结果查询 * 退费结果查询
*
* @param id * @param id
* @return * @return
*/ */
@@ -68,6 +69,7 @@ public interface ThreePartPayService {
/** /**
* 网银支付记录 * 网银支付记录
*
* @param searchKey 模糊查询 * @param searchKey 模糊查询
* @param pageNo 页码 * @param pageNo 页码
* @param pageSize 页容量 * @param pageSize 页容量
@@ -78,9 +80,9 @@ public interface ThreePartPayService {
/** /**
* 付款(师大中银) * 付款(师大中银)
*
* @param threePartPayDto 前台参数 * @param threePartPayDto 前台参数
* @return 结果 * @return 结果
*/ */
R<?> payForNenu(ThreePartPayDto threePartPayDto); R<?> payForNenu(ThreePartPayDto threePartPayDto);
>>>>>>> v1.3
} }

View File

@@ -78,6 +78,7 @@ import lombok.extern.slf4j.Slf4j;
@Component @Component
@Slf4j @Slf4j
public class EleInvoiceServiceImpl implements IEleInvoiceService { public class EleInvoiceServiceImpl implements IEleInvoiceService {
private static final BigDecimal ZERO = new BigDecimal("0.00"); private static final BigDecimal ZERO = new BigDecimal("0.00");
Logger logger = LoggerFactory.getLogger(EleInvoiceServiceImpl.class); Logger logger = LoggerFactory.getLogger(EleInvoiceServiceImpl.class);
@Resource @Resource
@@ -225,8 +226,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
String rmd5 = DigestUtils.md5Hex(str1.toString().getBytes(Charset.forName("UTF-8"))).toUpperCase(); String rmd5 = DigestUtils.md5Hex(str1.toString().getBytes(Charset.forName("UTF-8"))).toUpperCase();
String rsign = resultData.get("sign").toString(); String rsign = resultData.get("sign").toString();
System.out.println("验签-》" + (StringUtils.equals(rsign, rmd5))); System.out.println("验签-》" + (StringUtils.equals(rsign, rmd5)));
String busData = String busData
new String(Base64.getDecoder().decode(resultData.get("data").toString()), StandardCharsets.UTF_8); = new String(Base64.getDecoder().decode(resultData.get("data").toString()), StandardCharsets.UTF_8);
System.out.println("返回业务数据--》" + busData); System.out.println("返回业务数据--》" + busData);
Map busDataMap = new ObjectMapper().readValue(busData, Map.class); Map busDataMap = new ObjectMapper().readValue(busData, Map.class);
System.out System.out
@@ -395,8 +396,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
// unit 计量单位 // unit 计量单位
chargeDetail.put("unit", ""); chargeDetail.put("unit", "");
// std 收费标准 Number 14,2 是 // std 收费标准 Number 14,2 是
BigDecimal std = BigDecimal std
detail.getAmt().divide(new BigDecimal(detail.getNumber().toString()), 6, RoundingMode.HALF_UP); = detail.getAmt().divide(new BigDecimal(detail.getNumber().toString()), 6, RoundingMode.HALF_UP);
// 精确表示,避免科学计数法 // 精确表示,避免科学计数法
chargeDetail.put("std", df.format(std)); chargeDetail.put("std", df.format(std));
// number 数量 Number 14,2 是 // number 数量 Number 14,2 是
@@ -589,7 +590,6 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
bill.put("busType", "02"); bill.put("busType", "02");
// ------就诊信息------ // ------就诊信息------
// patientCategory 就诊科室 String 60 是 // patientCategory 就诊科室 String 60 是
bill.put("patientCategory", patientInfo.getPatientCategory()); bill.put("patientCategory", patientInfo.getPatientCategory());
// patientCategoryCode 就诊科室编码 String 60 是 // patientCategoryCode 就诊科室编码 String 60 是
@@ -701,8 +701,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
// unit 计量单位 // unit 计量单位
chargeDetail.put("unit", ""); chargeDetail.put("unit", "");
// std 收费标准 Number 14,2 是 // std 收费标准 Number 14,2 是
BigDecimal std = BigDecimal std
detail.getAmt().divide(new BigDecimal(detail.getNumber().toString()), 6, RoundingMode.HALF_UP); = detail.getAmt().divide(new BigDecimal(detail.getNumber().toString()), 6, RoundingMode.HALF_UP);
chargeDetail.put("std", df.format(std)); chargeDetail.put("std", df.format(std));
// number 数量 Number 14,2 是 // number 数量 Number 14,2 是
chargeDetail.put("number", detail.getNumber()); chargeDetail.put("number", detail.getNumber());
@@ -767,12 +767,9 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
String srcmsg; String srcmsg;
System.out.println(JSON.toJSONString(bill)); System.out.println(JSON.toJSONString(bill));
JSONObject resobj; JSONObject resobj;
<<<<<<< HEAD
=======
logger.info("************************************** 分 割 线 ***************************************"); logger.info("************************************** 分 割 线 ***************************************");
logger.info("门诊信息入参:" + JSON.toJSONString(bill)); logger.info("门诊信息入参:" + JSON.toJSONString(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————"); logger.info("———————————————————————————————————————————————————————————————————————————————————————");
>>>>>>> v1.3
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().getString("forwardSwitch"))) { if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().getString("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/invoiceEBillOutpatient"); resobj = PreInvoicePostForward(bill, "api/medical/invoiceEBillOutpatient");
} else { } else {
@@ -905,7 +902,6 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
bill.put("checker", user.getName()); bill.put("checker", user.getName());
// ------就诊信息------ // ------就诊信息------
// medCareAreaCode 医保行政区划码 String 6 否 医保结算时必须填写 // medCareAreaCode 医保行政区划码 String 6 否 医保结算时必须填写
bill.put("medCareAreaCode", patientInfo.getMedCareAreaCode()); bill.put("medCareAreaCode", patientInfo.getMedCareAreaCode());
// category 入院科室名称 String 50 是 如:入院科室不存在,填写出院科室 // category 入院科室名称 String 50 是 如:入院科室不存在,填写出院科室
@@ -1061,8 +1057,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
// unit 计量单位 // unit 计量单位
chargeDetail.put("unit", ""); chargeDetail.put("unit", "");
// std 收费标准 Number 14,2 是 // std 收费标准 Number 14,2 是
BigDecimal std = BigDecimal std
detail.getAmt().divide(new BigDecimal(detail.getNumber().toString()), 6, RoundingMode.HALF_UP); = detail.getAmt().divide(new BigDecimal(detail.getNumber().toString()), 6, RoundingMode.HALF_UP);
// 精确表示,避免科学计数法 // 精确表示,避免科学计数法
chargeDetail.put("std", df.format(std)); chargeDetail.put("std", df.format(std));
// number 数量 Number 14,2 是 // number 数量 Number 14,2 是
@@ -1077,19 +1073,15 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
bill.put("chargeDetail", chargeDetails); bill.put("chargeDetail", chargeDetails);
// --------------------请求业务参数 data--------------------END // --------------------请求业务参数 data--------------------END
JSONObject redata = new JSONObject(); JSONObject redata = new JSONObject();
String redata64; String redata64;
String srcdata; String srcdata;
String srcmsg; String srcmsg;
// JSONObject resobj = PreInvoicePostForward(bill, "api/medical/invEBillHospitalized"); // JSONObject resobj = PreInvoicePostForward(bill, "api/medical/invEBillHospitalized");
JSONObject resobj; JSONObject resobj;
<<<<<<< HEAD
=======
logger.info("************************************** 分 割 线 ***************************************"); logger.info("************************************** 分 割 线 ***************************************");
logger.info("住院信息入参:" + JSON.toJSONString(bill)); logger.info("住院信息入参:" + JSON.toJSONString(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————"); logger.info("———————————————————————————————————————————————————————————————————————————————————————");
>>>>>>> v1.3
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().getString("forwardSwitch"))) { if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().getString("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/invEBillHospitalized"); resobj = PreInvoicePostForward(bill, "api/medical/invEBillHospitalized");
} else { } else {
@@ -1160,7 +1152,6 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
* @param clinicSettle 医保结算记录 * @param clinicSettle 医保结算记录
* @return 返回值 * @return 返回值
*/ */
private JSONObject commomSet(EleInvoicePatientInfoDto patientInfo, EleInvoicePaymentInfoDto paymentInfo, private JSONObject commomSet(EleInvoicePatientInfoDto patientInfo, EleInvoicePaymentInfoDto paymentInfo,
InvoiceBaseInfoDto clinicSettle) throws ParseException { InvoiceBaseInfoDto clinicSettle) throws ParseException {
// 日期格式化:定义多种时间格式,用于生成业务流水号、时间戳等。 // 日期格式化:定义多种时间格式,用于生成业务流水号、时间戳等。
@@ -1266,7 +1257,6 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
// 360 老红军医疗保障 //370 企业补充医疗保险 // 360 老红军医疗保障 //370 企业补充医疗保险
// 380 新型农村合作医疗 //390 城乡居民基本医疗保险 // 380 新型农村合作医疗 //390 城乡居民基本医疗保险
// 391 城镇居民基本医疗保险 //392 城乡居民大病医疗保险 //399 其他特殊人员医疗保障 // 391 城镇居民基本医疗保险 //392 城乡居民大病医疗保险 //399 其他特殊人员医疗保障
// 01 职工基本医疗保险 06 全公费 // 01 职工基本医疗保险 06 全公费
// 02 居民基本医疗保险 07 全自费 // 02 居民基本医疗保险 07 全自费
// 03 新型农村合作医疗 90 城乡居民医疗保险 // 03 新型农村合作医疗 90 城乡居民医疗保险
@@ -1434,16 +1424,11 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
payChannelDetail.put("payChannelCode", "11"); payChannelDetail.put("payChannelCode", "11");
// payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount().add(paymentInfo // payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount().add(paymentInfo
// .getOtherPayAmount().add(paymentInfo.getZhPayAmount()).add(paymentInfo.getAelfYbZhGjValue())))); // .getOtherPayAmount().add(paymentInfo.getZhPayAmount()).add(paymentInfo.getAelfYbZhGjValue()))));
<<<<<<< HEAD
payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount()
.add(paymentInfo.getZhPayAmount()).add(paymentInfo.getAelfYbZhGjValue())));
=======
//payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount() //payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount()
// .add(paymentInfo.getZhPayAmount()).add(paymentInfo.getAelfYbZhGjValue()))); // .add(paymentInfo.getZhPayAmount()).add(paymentInfo.getAelfYbZhGjValue())));
// 根据这几个医院的实际情况,医保支付金额先后刨除掉其他支付共济支付金额两项 // 根据这几个医院的实际情况,医保支付金额先后刨除掉其他支付共济支付金额两项
payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount() payChannelDetail.put("payChannelValue", df.format(paymentInfo.getYbFundPayAmount()
.add(paymentInfo.getZhPayAmount()))); .add(paymentInfo.getZhPayAmount())));
>>>>>>> v1.3
payChannelDetails.add(payChannelDetail); payChannelDetails.add(payChannelDetail);
// 现金 // 现金
@@ -1512,8 +1497,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
return R.fail(PromptMsgConstant.invoice.M00004); return R.fail(PromptMsgConstant.invoice.M00004);
} }
Invoice invoice = Invoice invoice
invoiceService.getOne(new LambdaQueryWrapper<Invoice>().eq(Invoice::getReconciliationId, paymentId)); = invoiceService.getOne(new LambdaQueryWrapper<Invoice>().eq(Invoice::getReconciliationId, paymentId));
if (invoice.getStatusEnum() == null || invoice.getStatusEnum().equals(InvoiceStatus.DRAFT)) { if (invoice.getStatusEnum() == null || invoice.getStatusEnum().equals(InvoiceStatus.DRAFT)) {
return R.fail(PromptMsgConstant.invoice.M00007); return R.fail(PromptMsgConstant.invoice.M00007);
@@ -1548,13 +1533,9 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
// JSONObject resobj = PreInvoicePostForward(bill, "api/medical/writeOffEBill"); // JSONObject resobj = PreInvoicePostForward(bill, "api/medical/writeOffEBill");
JSONObject resobj; JSONObject resobj;
<<<<<<< HEAD
logger.info("冲红信息入参:" + JSON.toJSONString(bill));
=======
logger.info("************************************** 分 割 线 ***************************************"); logger.info("************************************** 分 割 线 ***************************************");
logger.info("冲红信息入参:" + JSON.toJSONString(bill)); logger.info("冲红信息入参:" + JSON.toJSONString(bill));
logger.info("———————————————————————————————————————————————————————————————————————————————————————"); logger.info("———————————————————————————————————————————————————————————————————————————————————————");
>>>>>>> v1.3
if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().getString("forwardSwitch"))) { if ("0".equals(SecurityUtils.getLoginUser().getOptionJson().getString("forwardSwitch"))) {
resobj = PreInvoicePostForward(bill, "api/medical/writeOffEBill"); resobj = PreInvoicePostForward(bill, "api/medical/writeOffEBill");
} else { } else {
@@ -1577,8 +1558,8 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
return R.fail(PromptMsgConstant.Common.M00011); return R.fail(PromptMsgConstant.Common.M00011);
} }
// 查询退款的支付id // 查询退款的支付id
List<PaymentReconciliation> paymentReconciliation = List<PaymentReconciliation> paymentReconciliation
paymentReconciliationService.list(new LambdaQueryWrapper<PaymentReconciliation>() = paymentReconciliationService.list(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getRelationId, paymentId) .eq(PaymentReconciliation::getRelationId, paymentId)
.in(PaymentReconciliation::getStatusEnum, .in(PaymentReconciliation::getStatusEnum,
Arrays.asList(PaymentStatus.REFUND_ALL.getValue(), Arrays.asList(PaymentStatus.REFUND_ALL.getValue(),
@@ -1718,13 +1699,10 @@ public class EleInvoiceServiceImpl implements IEleInvoiceService {
if (YbPayment.OVERLMT_SELFPAY.getValue().equals(detail.getPayEnum())) { if (YbPayment.OVERLMT_SELFPAY.getValue().equals(detail.getPayEnum())) {
invoiceBaseInfoDto.setOverlmtSelfpay(detail.getAmount()); invoiceBaseInfoDto.setOverlmtSelfpay(detail.getAmount());
} }
<<<<<<< HEAD
=======
// 先行自付费用 // 先行自付费用
if (YbPayment.PRESELFPAY_AMT.getValue().equals(detail.getPayEnum())) { if (YbPayment.PRESELFPAY_AMT.getValue().equals(detail.getPayEnum())) {
invoiceBaseInfoDto.setPreselfpayAmt(detail.getAmount()); invoiceBaseInfoDto.setPreselfpayAmt(detail.getAmount());
} }
>>>>>>> v1.3
// 学校垫支 // 学校垫支
if (YbPayment.SCHOOL_GF_PAY.getValue().equals(detail.getPayEnum())) { if (YbPayment.SCHOOL_GF_PAY.getValue().equals(detail.getPayEnum())) {
invoiceBaseInfoDto.setGfRatio(detail.getAmount()); invoiceBaseInfoDto.setGfRatio(detail.getAmount());

View File

@@ -303,8 +303,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
map.put("insuplcAdmdvs", perinfo.getInsuplcAdmdvs());// 患者参保地区划 map.put("insuplcAdmdvs", perinfo.getInsuplcAdmdvs());// 患者参保地区划
} }
Contract contract = Contract contract
contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo())); = contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
if (contract == null) { if (contract == null) {
throw new ServiceException("未查询到合同信息"); throw new ServiceException("未查询到合同信息");
} }
@@ -319,8 +319,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
if (encounterDiagnosis != null) { if (encounterDiagnosis != null) {
Condition condition = iConditionService.getById(encounterDiagnosis.getConditionId()); Condition condition = iConditionService.getById(encounterDiagnosis.getConditionId());
if (condition != null) { if (condition != null) {
ConditionDefinition conditionDefinition = ConditionDefinition conditionDefinition
iConditionDefinitionService.getOne(new LambdaQueryWrapper<ConditionDefinition>() = iConditionDefinitionService.getOne(new LambdaQueryWrapper<ConditionDefinition>()
.eq(ConditionDefinition::getId, condition.getDefinitionId())); .eq(ConditionDefinition::getId, condition.getDefinitionId()));
if (conditionDefinition != null) { if (conditionDefinition != null) {
map.put("conditionDefinition", conditionDefinition.getName());// 诊断名 map.put("conditionDefinition", conditionDefinition.getName());// 诊断名
@@ -349,9 +349,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
ChargeItemDefinition chargeItemDefinition = iChargeItemDefinitionService.getById(definitionId); ChargeItemDefinition chargeItemDefinition = iChargeItemDefinitionService.getById(definitionId);
YbMedChrgItmType medChrgItmType
YbMedChrgItmType medChrgItmType = = YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType()));
YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType()));
switch (medChrgItmType) { switch (medChrgItmType) {
case BED_FEE: case BED_FEE:
@@ -467,8 +466,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// } // }
// 查询所有的支付详情 // 查询所有的支付详情
List<Long> paymentIdList = List<Long> paymentIdList
paymentReconciliationList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList()); = paymentReconciliationList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList());
List<PaymentRecDetail> paymentDetails = paymentRecDetailService List<PaymentRecDetail> paymentDetails = paymentRecDetailService
.list(new LambdaQueryWrapper<PaymentRecDetail>().in(PaymentRecDetail::getReconciliationId, paymentIdList) .list(new LambdaQueryWrapper<PaymentRecDetail>().in(PaymentRecDetail::getReconciliationId, paymentIdList)
.eq(PaymentRecDetail::getDeleteFlag, DelFlag.NO.getCode()).notIn(PaymentRecDetail::getPayEnum, .eq(PaymentRecDetail::getDeleteFlag, DelFlag.NO.getCode()).notIn(PaymentRecDetail::getPayEnum,
@@ -487,15 +486,15 @@ public class IChargeBillServiceImpl implements IChargeBillService {
if (paymentDetails.isEmpty()) { if (paymentDetails.isEmpty()) {
return getMap(map); return getMap(map);
} }
Map<Long, List<PaymentRecDetail>> paymentDetailsKV = Map<Long, List<PaymentRecDetail>> paymentDetailsKV
paymentDetails.stream().collect(Collectors.groupingBy(PaymentRecDetail::getReconciliationId)); = paymentDetails.stream().collect(Collectors.groupingBy(PaymentRecDetail::getReconciliationId));
// 声明变量,符合要求的付款记录 // 声明变量,符合要求的付款记录
Collection<PaymentReconciliation> PaymentReconciliationList; Collection<PaymentReconciliation> PaymentReconciliationList;
List<Account> accountList = new ArrayList<>(); List<Account> accountList = new ArrayList<>();
if (!StringUtils.isEmpty(contractNo)) { if (!StringUtils.isEmpty(contractNo)) {
// 查询账户信息用来区分省市医保 // 查询账户信息用来区分省市医保
List<Long> accountIds = List<Long> accountIds
paymentDetails.stream().map(PaymentRecDetail::getAccountId).collect(Collectors.toList()); = paymentDetails.stream().map(PaymentRecDetail::getAccountId).collect(Collectors.toList());
if (accountIds.isEmpty()) { if (accountIds.isEmpty()) {
throw new ServiceException("查询账户信息为空"); throw new ServiceException("查询账户信息为空");
} }
@@ -505,8 +504,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
Map<Long, PaymentReconciliation> paymentMap = new HashMap<>(); Map<Long, PaymentReconciliation> paymentMap = new HashMap<>();
for (PaymentRecDetail paymentDetail : paymentDetails) { for (PaymentRecDetail paymentDetail : paymentDetails) {
Optional<Account> first = Optional<Account> first
accountList.stream().filter(x -> x.getId().equals(paymentDetail.getAccountId())).findFirst(); = accountList.stream().filter(x -> x.getId().equals(paymentDetail.getAccountId())).findFirst();
// 账户不符合要求的筛出掉 // 账户不符合要求的筛出掉
if (first.isEmpty() || !first.get().getContractNo().equals(contractNo)) { if (first.isEmpty() || !first.get().getContractNo().equals(contractNo)) {
continue; continue;
@@ -545,7 +544,6 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// System.out.println(chargeItemId); // System.out.println(chargeItemId);
// System.out.println(","); // System.out.println(",");
// } // }
List<ChargeItem> chargeItemList = chargeItemService.list(new LambdaQueryWrapper<ChargeItem>() List<ChargeItem> chargeItemList = chargeItemService.list(new LambdaQueryWrapper<ChargeItem>()
.in(ChargeItem::getId, chargeItemIds).eq(ChargeItem::getDeleteFlag, DelFlag.NO.getCode())); .in(ChargeItem::getId, chargeItemIds).eq(ChargeItem::getDeleteFlag, DelFlag.NO.getCode()));
if (paymentDetails.isEmpty()) { if (paymentDetails.isEmpty()) {
@@ -558,20 +556,19 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// System.out.println(JSON.toJSONString(chargeItem)); // System.out.println(JSON.toJSONString(chargeItem));
// } // }
// } // }
// 查询收费定义列表 // 查询收费定义列表
List<Long> chargeItemDefinitionIdList = List<Long> chargeItemDefinitionIdList
chargeItemList.stream().map(ChargeItem::getDefinitionId).collect(Collectors.toList()); = chargeItemList.stream().map(ChargeItem::getDefinitionId).collect(Collectors.toList());
if (chargeItemDefinitionIdList.isEmpty()) { if (chargeItemDefinitionIdList.isEmpty()) {
throw new ServiceException("未查询到收费记录,无收费项信息"); throw new ServiceException("未查询到收费记录,无收费项信息");
} }
List<ChargeItemDefinition> chargeItemDefinitions = List<ChargeItemDefinition> chargeItemDefinitions
iChargeItemDefinitionService.listByIds(chargeItemDefinitionIdList); = iChargeItemDefinitionService.listByIds(chargeItemDefinitionIdList);
if (chargeItemDefinitions.isEmpty()) { if (chargeItemDefinitions.isEmpty()) {
throw new ServiceException("未查询到收费记录,无收费项信息"); throw new ServiceException("未查询到收费记录,无收费项信息");
} }
Map<Long, List<ChargeItemDefinition>> chargeItemDefKV = Map<Long, List<ChargeItemDefinition>> chargeItemDefKV
chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getId)); = chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getId));
// 查询医保结算id // 查询医保结算id
List<String> settleIds = new ArrayList<>(); List<String> settleIds = new ArrayList<>();
@@ -602,8 +599,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
for (PaymentRecDetail paymentDetail : paymentDetails) { for (PaymentRecDetail paymentDetail : paymentDetails) {
if (!StringUtils.isEmpty(contractNo)) { if (!StringUtils.isEmpty(contractNo)) {
Optional<Account> first = Optional<Account> first
accountList.stream().filter(x -> x.getId().equals(paymentDetail.getAccountId())).findFirst(); = accountList.stream().filter(x -> x.getId().equals(paymentDetail.getAccountId())).findFirst();
if (first.isEmpty() || !first.get().getContractNo().equals(contractNo)) { if (first.isEmpty() || !first.get().getContractNo().equals(contractNo)) {
continue; continue;
} }
@@ -646,14 +643,14 @@ public class IChargeBillServiceImpl implements IChargeBillService {
} }
} }
if (!returnPaymentList.isEmpty()) { if (!returnPaymentList.isEmpty()) {
List<Long> returnIds = List<Long> returnIds
returnPaymentList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList()); = returnPaymentList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList());
List<Invoice> invoiceList = iInvoiceService.list(new LambdaUpdateWrapper<Invoice>() List<Invoice> invoiceList = iInvoiceService.list(new LambdaUpdateWrapper<Invoice>()
.in(Invoice::getReconciliationId, returnIds).eq(Invoice::getDeleteFlag, DelFlag.NO.getCode())); .in(Invoice::getReconciliationId, returnIds).eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()));
if (!invoiceList.isEmpty()) { if (!invoiceList.isEmpty()) {
Map<Long, List<Invoice>> invoiceKV = Map<Long, List<Invoice>> invoiceKV
invoiceList.stream().collect(Collectors.groupingBy(Invoice::getReconciliationId)); = invoiceList.stream().collect(Collectors.groupingBy(Invoice::getReconciliationId));
for (PaymentReconciliation paymentReconciliation : returnPaymentList) { for (PaymentReconciliation paymentReconciliation : returnPaymentList) {
returnBillVO = new ReturnBillVO(); returnBillVO = new ReturnBillVO();
returnBillVO.setTotalAmount(paymentReconciliation.getTenderedAmount()); returnBillVO.setTotalAmount(paymentReconciliation.getTenderedAmount());
@@ -719,8 +716,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
ChargeItemDefinition chargeItemDefinition = chargeItemDefKV.get(definitionId).get(0); ChargeItemDefinition chargeItemDefinition = chargeItemDefKV.get(definitionId).get(0);
YbMedChrgItmType medChrgItmType = YbMedChrgItmType medChrgItmType
YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType())); = YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType()));
switch (medChrgItmType) { switch (medChrgItmType) {
case BED_FEE: case BED_FEE:
@@ -799,10 +796,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
throw new ServiceException("收费定义未设置财务分类提示信息chargeItemDefinitionId" + chargeItemDefinition.getId()); throw new ServiceException("收费定义未设置财务分类提示信息chargeItemDefinitionId" + chargeItemDefinition.getId());
} }
} }
Map<String, List<ChargeItemDefinition>> chargeItemDefMapByTypeCode = Map<String, List<ChargeItemDefinition>> chargeItemDefMapByTypeCode
chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getTypeCode)); = chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getTypeCode));
Map<Long, List<ChargeItem>> chargeItemMapByDefinitionId = Map<Long, List<ChargeItem>> chargeItemMapByDefinitionId
chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getDefinitionId)); = chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getDefinitionId));
for (Map.Entry<String, List<ChargeItemDefinition>> stringListEntry : chargeItemDefMapByTypeCode.entrySet()) { for (Map.Entry<String, List<ChargeItemDefinition>> stringListEntry : chargeItemDefMapByTypeCode.entrySet()) {
String key = stringListEntry.getKey(); String key = stringListEntry.getKey();
@@ -863,16 +860,15 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// } // }
// } // }
// } // }
// 查询所有的支付详情 // 查询所有的支付详情
List<Long> paymentIdList = List<Long> paymentIdList
paymentReconciliationList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList()); = paymentReconciliationList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList());
// List<PaymentRecDetail> paymentDetails = paymentRecDetailService // List<PaymentRecDetail> paymentDetails = paymentRecDetailService
// .list(new LambdaQueryWrapper<PaymentRecDetail>().in(PaymentRecDetail::getReconciliationId, paymentIdList) // .list(new LambdaQueryWrapper<PaymentRecDetail>().in(PaymentRecDetail::getReconciliationId, paymentIdList)
// .eq(PaymentRecDetail::getDeleteFlag, DelFlag.NO.getCode())); // .eq(PaymentRecDetail::getDeleteFlag, DelFlag.NO.getCode()));
List<PaymentRecDetailAccountResult> PaymentRecDetailAccountResultList = List<PaymentRecDetailAccountResult> PaymentRecDetailAccountResultList
paymentRecDetailService.getListByReconciliationIds(paymentIdList, PaymentKind.OUTPATIENT_CLINIC.getValue()); = paymentRecDetailService.getListByReconciliationIds(paymentIdList, PaymentKind.OUTPATIENT_CLINIC.getValue());
if (PaymentRecDetailAccountResultList.isEmpty()) { if (PaymentRecDetailAccountResultList.isEmpty()) {
return getMap(map); return getMap(map);
} }
@@ -935,7 +931,6 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// throw new ServiceException("收费项:" + chargeItem.getId()); // throw new ServiceException("收费项:" + chargeItem.getId());
// } // }
// } // }
// 根据省市医保分组 // 根据省市医保分组
Map<String, List<PaymentRecDetailAccountResult>> paymentDetailsMapByContract = PaymentRecDetailAccountResultList Map<String, List<PaymentRecDetailAccountResult>> paymentDetailsMapByContract = PaymentRecDetailAccountResultList
.stream().collect(Collectors.groupingBy(PaymentRecDetailAccountResult::getContractNo)); .stream().collect(Collectors.groupingBy(PaymentRecDetailAccountResult::getContractNo));
@@ -964,20 +959,19 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// System.out.println(JSON.toJSONString(chargeItem)); // System.out.println(JSON.toJSONString(chargeItem));
// } // }
// } // }
// 查询收费定义列表 // 查询收费定义列表
List<Long> chargeItemDefinitionIdList = List<Long> chargeItemDefinitionIdList
chargeItemList.stream().map(ChargeItem::getDefinitionId).collect(Collectors.toList()); = chargeItemList.stream().map(ChargeItem::getDefinitionId).collect(Collectors.toList());
if (chargeItemDefinitionIdList.isEmpty()) { if (chargeItemDefinitionIdList.isEmpty()) {
throw new ServiceException("未查询到收费记录,无收费项信息"); throw new ServiceException("未查询到收费记录,无收费项信息");
} }
List<ChargeItemDefinition> chargeItemDefinitions = List<ChargeItemDefinition> chargeItemDefinitions
iChargeItemDefinitionService.listByIds(chargeItemDefinitionIdList); = iChargeItemDefinitionService.listByIds(chargeItemDefinitionIdList);
if (chargeItemDefinitions.isEmpty()) { if (chargeItemDefinitions.isEmpty()) {
throw new ServiceException("未查询到收费记录,无收费项信息"); throw new ServiceException("未查询到收费记录,无收费项信息");
} }
Map<Long, List<ChargeItemDefinition>> chargeItemDefKV = Map<Long, List<ChargeItemDefinition>> chargeItemDefKV
chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getId)); = chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getId));
// 查询医保结算id // 查询医保结算id
List<String> settleIds = new ArrayList<>(); List<String> settleIds = new ArrayList<>();
@@ -1011,8 +1005,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
BigDecimal YbCashSum = BigDecimal.ZERO;// 医保现金总额 BigDecimal YbCashSum = BigDecimal.ZERO;// 医保现金总额
// 长大版本要显示出来省市医保的区别 // 长大版本要显示出来省市医保的区别
List<Contract> redisContractList = iContractService.getRedisContractList(); List<Contract> redisContractList = iContractService.getRedisContractList();
Map<String, List<Contract>> contractMapByBusNo = Map<String, List<Contract>> contractMapByBusNo
redisContractList.stream().collect(Collectors.groupingBy(Contract::getBusNo)); = redisContractList.stream().collect(Collectors.groupingBy(Contract::getBusNo));
for (Map.Entry<String, List<PaymentRecDetailAccountResult>> stringListEntry : paymentDetailsMapByContract for (Map.Entry<String, List<PaymentRecDetailAccountResult>> stringListEntry : paymentDetailsMapByContract
.entrySet()) { .entrySet()) {
String key = stringListEntry.getKey(); String key = stringListEntry.getKey();
@@ -1122,11 +1116,11 @@ public class IChargeBillServiceImpl implements IChargeBillService {
List<ChargeItemDefinition> beforeChargeItemDefinitions = new ArrayList<>(); List<ChargeItemDefinition> beforeChargeItemDefinitions = new ArrayList<>();
List<ChargeItem> beforeChargeItemList = new ArrayList<>(); List<ChargeItem> beforeChargeItemList = new ArrayList<>();
if (!returnPaymentList.isEmpty()) { if (!returnPaymentList.isEmpty()) {
List<Long> returnIds = List<Long> returnIds
returnPaymentList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList()); = returnPaymentList.stream().map(PaymentReconciliation::getId).collect(Collectors.toList());
// 查原付款单子 // 查原付款单子
List<Long> relationIdList = List<Long> relationIdList
returnPaymentList.stream().map(PaymentReconciliation::getRelationId).collect(Collectors.toList()); = returnPaymentList.stream().map(PaymentReconciliation::getRelationId).collect(Collectors.toList());
if (relationIdList.isEmpty() || returnPaymentList.size() != relationIdList.size()) { if (relationIdList.isEmpty() || returnPaymentList.size() != relationIdList.size()) {
throw new ServiceException("数据异常,存在无法关联到原单的退款单,请联系工程师"); throw new ServiceException("数据异常,存在无法关联到原单的退款单,请联系工程师");
} }
@@ -1142,8 +1136,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
} }
if (!beforeList.isEmpty()) { if (!beforeList.isEmpty()) {
// 拆解所有的chargeItemId拼装成一个集合 // 拆解所有的chargeItemId拼装成一个集合
List<String> chargeItemIdList = List<String> chargeItemIdList
beforeList.stream().map(PaymentReconciliation::getChargeItemIds).collect(Collectors.toList()); = beforeList.stream().map(PaymentReconciliation::getChargeItemIds).collect(Collectors.toList());
List<Long> beforeChargeItemIds = new ArrayList<>(); List<Long> beforeChargeItemIds = new ArrayList<>();
for (String chargeItemId : chargeItemIdList) { for (String chargeItemId : chargeItemIdList) {
if (StringUtils.isNotEmpty(chargeItemId)) { if (StringUtils.isNotEmpty(chargeItemId)) {
@@ -1158,8 +1152,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
if (beforeChargeItemList.isEmpty()) { if (beforeChargeItemList.isEmpty()) {
throw new ServiceException("数据异常,查找不到退费收费项信息"); throw new ServiceException("数据异常,查找不到退费收费项信息");
} }
List<Long> beforeChargeItemDefinitionIdList = List<Long> beforeChargeItemDefinitionIdList
beforeChargeItemList.stream().map(ChargeItem::getDefinitionId).collect(Collectors.toList()); = beforeChargeItemList.stream().map(ChargeItem::getDefinitionId).collect(Collectors.toList());
if (beforeChargeItemDefinitionIdList.isEmpty()) { if (beforeChargeItemDefinitionIdList.isEmpty()) {
throw new ServiceException("数据异常,查找不到收费项的定义信息"); throw new ServiceException("数据异常,查找不到收费项的定义信息");
} }
@@ -1180,8 +1174,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
ChargeItemDefinition chargeItemDefinition = chargeItemDefKV.get(definitionId).get(0); ChargeItemDefinition chargeItemDefinition = chargeItemDefKV.get(definitionId).get(0);
YbMedChrgItmType medChrgItmType = YbMedChrgItmType medChrgItmType
YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType())); = YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType()));
switch (medChrgItmType) { switch (medChrgItmType) {
case BED_FEE: case BED_FEE:
@@ -1233,13 +1227,13 @@ public class IChargeBillServiceImpl implements IChargeBillService {
List<Invoice> invoiceList = iInvoiceService.list(new LambdaUpdateWrapper<Invoice>() List<Invoice> invoiceList = iInvoiceService.list(new LambdaUpdateWrapper<Invoice>()
.in(Invoice::getReconciliationId, returnIds).eq(Invoice::getDeleteFlag, DelFlag.NO.getCode())); .in(Invoice::getReconciliationId, returnIds).eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()));
if (!invoiceList.isEmpty()) { if (!invoiceList.isEmpty()) {
Map<Long, List<Invoice>> invoiceKV = Map<Long, List<Invoice>> invoiceKV
invoiceList.stream().collect(Collectors.groupingBy(Invoice::getReconciliationId)); = invoiceList.stream().collect(Collectors.groupingBy(Invoice::getReconciliationId));
for (PaymentReconciliation paymentReconciliation : returnPaymentList) { for (PaymentReconciliation paymentReconciliation : returnPaymentList) {
returnBillVO = new ReturnBillVO(); returnBillVO = new ReturnBillVO();
returnBillVO.setTotalAmount(paymentReconciliation.getTenderedAmount()); returnBillVO.setTotalAmount(paymentReconciliation.getTenderedAmount());
List<PaymentRecDetailAccountResult> paymentRecDetails = List<PaymentRecDetailAccountResult> paymentRecDetails
paymentDetailsKV.get(paymentReconciliation.getId()); = paymentDetailsKV.get(paymentReconciliation.getId());
for (PaymentRecDetailAccountResult paymentRecDetail : paymentRecDetails) { for (PaymentRecDetailAccountResult paymentRecDetail : paymentRecDetails) {
if (YbPayment.SELF_CASH_PAY.getValue().equals(paymentRecDetail.getPayEnum())) { if (YbPayment.SELF_CASH_PAY.getValue().equals(paymentRecDetail.getPayEnum())) {
returnBillVO.setPaidAmount(paymentRecDetail.getAmount()); returnBillVO.setPaidAmount(paymentRecDetail.getAmount());
@@ -1286,8 +1280,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
ChargeItemDefinition chargeItemDefinition = chargeItemDefKV.get(definitionId).get(0); ChargeItemDefinition chargeItemDefinition = chargeItemDefKV.get(definitionId).get(0);
YbMedChrgItmType medChrgItmType = YbMedChrgItmType medChrgItmType
YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType())); = YbMedChrgItmType.getByCode(Integer.parseInt(chargeItemDefinition.getYbType()));
switch (medChrgItmType) { switch (medChrgItmType) {
case BED_FEE: case BED_FEE:
@@ -1367,10 +1361,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
} }
} }
Map<String, List<ChargeItemDefinition>> chargeItemDefMapByTypeCode = Map<String, List<ChargeItemDefinition>> chargeItemDefMapByTypeCode
chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getTypeCode)); = chargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getTypeCode));
Map<Long, List<ChargeItem>> chargeItemMapByDefinitionId = Map<Long, List<ChargeItem>> chargeItemMapByDefinitionId
chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getDefinitionId)); = chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getDefinitionId));
for (Map.Entry<String, List<ChargeItemDefinition>> stringListEntry : chargeItemDefMapByTypeCode.entrySet()) { for (Map.Entry<String, List<ChargeItemDefinition>> stringListEntry : chargeItemDefMapByTypeCode.entrySet()) {
String key = stringListEntry.getKey(); String key = stringListEntry.getKey();
@@ -1389,10 +1383,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// 超本时间段的退费单统计 // 超本时间段的退费单统计
if (!beforeChargeItemDefinitions.isEmpty() && !beforeChargeItemList.isEmpty()) { if (!beforeChargeItemDefinitions.isEmpty() && !beforeChargeItemList.isEmpty()) {
Map<String, List<ChargeItemDefinition>> beforeChargeItemDefMapByTypeCode = Map<String, List<ChargeItemDefinition>> beforeChargeItemDefMapByTypeCode
beforeChargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getTypeCode)); = beforeChargeItemDefinitions.stream().collect(Collectors.groupingBy(ChargeItemDefinition::getTypeCode));
Map<Long, List<ChargeItem>> beforeChargeItemMapByDefinitionId = Map<Long, List<ChargeItem>> beforeChargeItemMapByDefinitionId
beforeChargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getDefinitionId)); = beforeChargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getDefinitionId));
for (Map.Entry<String, List<ChargeItemDefinition>> longListEntry : beforeChargeItemDefMapByTypeCode for (Map.Entry<String, List<ChargeItemDefinition>> longListEntry : beforeChargeItemDefMapByTypeCode
.entrySet()) { .entrySet()) {
BigDecimal bigDecimal = map.get(longListEntry.getKey()) == null ? BigDecimal.ZERO BigDecimal bigDecimal = map.get(longListEntry.getKey()) == null ? BigDecimal.ZERO
@@ -1413,8 +1407,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// 医保人次自费人次计算 // 医保人次自费人次计算
List<EncounterAccountDto> list = iEncounterService.getEncounterInfoByTime(startDate, endDate); List<EncounterAccountDto> list = iEncounterService.getEncounterInfoByTime(startDate, endDate);
Map<String, List<EncounterAccountDto>> encounterAccountDtoMapByContract = Map<String, List<EncounterAccountDto>> encounterAccountDtoMapByContract
list.stream().collect(Collectors.groupingBy(EncounterAccountDto::getContractNo)); = list.stream().collect(Collectors.groupingBy(EncounterAccountDto::getContractNo));
for (Map.Entry<String, List<EncounterAccountDto>> stringListEntry : encounterAccountDtoMapByContract for (Map.Entry<String, List<EncounterAccountDto>> stringListEntry : encounterAccountDtoMapByContract
.entrySet()) { .entrySet()) {
String key = stringListEntry.getKey(); String key = stringListEntry.getKey();
@@ -1473,10 +1467,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
map.put("amount", amount);// 应收金额 map.put("amount", amount);// 应收金额
// 查询所有的支付详情(业务注释:收集并统计不同支付渠道支付的费用) // 查询所有的支付详情(业务注释:收集并统计不同支付渠道支付的费用)
List<Long> paymentIdList = List<Long> paymentIdList
paymentReconciliationList.stream().map(PaymentReconciliationAccountDel::getId).collect(Collectors.toList()); = paymentReconciliationList.stream().map(PaymentReconciliationAccountDel::getId).collect(Collectors.toList());
List<PaymentRecDetailAccountResult> PaymentRecDetailAccountResultList = List<PaymentRecDetailAccountResult> PaymentRecDetailAccountResultList
paymentRecDetailService.getListByReconciliationIds(paymentIdList, PaymentKind.OUTPATIENT_CLINIC.getValue()); = paymentRecDetailService.getListByReconciliationIds(paymentIdList, PaymentKind.OUTPATIENT_CLINIC.getValue());
if (PaymentRecDetailAccountResultList.isEmpty()) { if (PaymentRecDetailAccountResultList.isEmpty()) {
return getMap(map); return getMap(map);
@@ -1503,8 +1497,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
BigDecimal discountSum = BigDecimal.ZERO;// 优惠金额 BigDecimal discountSum = BigDecimal.ZERO;// 优惠金额
// 长大版本要显示出来省市医保的区别 // 长大版本要显示出来省市医保的区别
List<Contract> redisContractList = iContractService.getRedisContractList(); List<Contract> redisContractList = iContractService.getRedisContractList();
Map<String, List<Contract>> contractMapByBusNo = Map<String, List<Contract>> contractMapByBusNo
redisContractList.stream().collect(Collectors.groupingBy(Contract::getBusNo)); = redisContractList.stream().collect(Collectors.groupingBy(Contract::getBusNo));
for (Map.Entry<String, List<PaymentRecDetailAccountResult>> stringListEntry : paymentDetailsMapByContract for (Map.Entry<String, List<PaymentRecDetailAccountResult>> stringListEntry : paymentDetailsMapByContract
.entrySet()) { .entrySet()) {
@@ -1584,15 +1578,15 @@ public class IChargeBillServiceImpl implements IChargeBillService {
Map<Long, List<PaymentReconciliationAccountDel>> returnPaymentMapByRelationId = new HashMap<>(); Map<Long, List<PaymentReconciliationAccountDel>> returnPaymentMapByRelationId = new HashMap<>();
if (!returnList.isEmpty()) { if (!returnList.isEmpty()) {
returnPaymentMapByRelationId = returnPaymentMapByRelationId
returnList.stream().collect(Collectors.groupingBy(PaymentReconciliationAccountDel::getRelationId)); = returnList.stream().collect(Collectors.groupingBy(PaymentReconciliationAccountDel::getRelationId));
} }
List<String> addChargeItemIds = new ArrayList<>(); List<String> addChargeItemIds = new ArrayList<>();
List<String> subChargeItemIds = new ArrayList<>(); List<String> subChargeItemIds = new ArrayList<>();
for (PaymentReconciliationAccountDel paymentReconciliation : paymentList) { for (PaymentReconciliationAccountDel paymentReconciliation : paymentList) {
List<PaymentReconciliationAccountDel> paymentReconciliations = List<PaymentReconciliationAccountDel> paymentReconciliations
returnPaymentMapByRelationId.get(paymentReconciliation.getId()); = returnPaymentMapByRelationId.get(paymentReconciliation.getId());
if (paymentReconciliations != null && !paymentReconciliations.isEmpty()) { if (paymentReconciliations != null && !paymentReconciliations.isEmpty()) {
// 情况a // 情况a
if (PaymentStatus.SUCCESS.getValue().equals(paymentReconciliation.getStatusEnum())) { if (PaymentStatus.SUCCESS.getValue().equals(paymentReconciliation.getStatusEnum())) {
@@ -1646,8 +1640,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
if (chargeItemDefInfoByIds.isEmpty()) { if (chargeItemDefInfoByIds.isEmpty()) {
throw new ServiceException("数据异常,该时间段内未查询到收费项"); throw new ServiceException("数据异常,该时间段内未查询到收费项");
} }
Map<Long, List<ChargeItemDefInfo>> chargeItemDefInfoKVById = Map<Long, List<ChargeItemDefInfo>> chargeItemDefInfoKVById
chargeItemDefInfoByIds.stream().collect(Collectors.groupingBy(ChargeItemDefInfo::getId)); = chargeItemDefInfoByIds.stream().collect(Collectors.groupingBy(ChargeItemDefInfo::getId));
// 省名变量 // 省名变量
BigDecimal bedFee = BigDecimal.ZERO;// 床位费 BigDecimal bedFee = BigDecimal.ZERO;// 床位费
@@ -1805,15 +1799,9 @@ public class IChargeBillServiceImpl implements IChargeBillService {
map.put("GENERAL_CONSULTATION_FEE", generalConsultationFee);// 一般诊疗费 map.put("GENERAL_CONSULTATION_FEE", generalConsultationFee);// 一般诊疗费
map.put("REGISTRATION_FEE", registrationFee);// 挂号费 map.put("REGISTRATION_FEE", registrationFee);// 挂号费
map.put("OTHER_FEE", otherFee);// 其他费用 map.put("OTHER_FEE", otherFee);// 其他费用
<<<<<<< HEAD
sum = bedFee.add(diagnosticFee).add(checkFee).add(diagnosticTestFee).add(medicalExpenseFee).add(operationFee)
.add(nursingFee).add(sanitaryMaterialsFee).add(westMedicine).add(chineseMedicineFee)
.add(chineseMedicineSlicesFee).add(generalConsultationFee).add(registrationFee).add(otherFee).subtract(discountSum);
=======
sum = bedFee.add(diagnosticFee).add(checkFee).add(diagnosticTestFee).add(outDiagnosticTestFee).add(medicalExpenseFee).add(operationFee) sum = bedFee.add(diagnosticFee).add(checkFee).add(diagnosticTestFee).add(outDiagnosticTestFee).add(medicalExpenseFee).add(operationFee)
.add(nursingFee).add(sanitaryMaterialsFee).add(westMedicine).add(chineseMedicineFee).add( .add(nursingFee).add(sanitaryMaterialsFee).add(westMedicine).add(chineseMedicineFee).add(
chineseMedicineSlicesFee).add(generalConsultationFee).add(registrationFee).add(otherFee); chineseMedicineSlicesFee).add(generalConsultationFee).add(registrationFee).add(otherFee);
>>>>>>> v1.3
map.put("SUM", sum);// 合计费用 map.put("SUM", sum);// 合计费用
Map<String, List<ChargeItemDefInfo>> chargeItemDefKVByTypeCode = chargeItemDefInfoByIds.stream() Map<String, List<ChargeItemDefInfo>> chargeItemDefKVByTypeCode = chargeItemDefInfoByIds.stream()
@@ -1848,11 +1836,11 @@ public class IChargeBillServiceImpl implements IChargeBillService {
ReturnBillVO returnBillVO; ReturnBillVO returnBillVO;
if (!returnList.isEmpty()) { if (!returnList.isEmpty()) {
List<Long> returnIds = List<Long> returnIds
returnList.stream().map(PaymentReconciliationAccountDel::getId).collect(Collectors.toList()); = returnList.stream().map(PaymentReconciliationAccountDel::getId).collect(Collectors.toList());
// 查原付款单子 // 查原付款单子
List<Long> relationIdList = List<Long> relationIdList
returnList.stream().map(PaymentReconciliationAccountDel::getRelationId).collect(Collectors.toList()); = returnList.stream().map(PaymentReconciliationAccountDel::getRelationId).collect(Collectors.toList());
if (relationIdList.isEmpty() || returnList.size() != relationIdList.size()) { if (relationIdList.isEmpty() || returnList.size() != relationIdList.size()) {
throw new ServiceException("数据异常,存在无法关联到原单的退款单,请联系工程师"); throw new ServiceException("数据异常,存在无法关联到原单的退款单,请联系工程师");
} }
@@ -1860,13 +1848,13 @@ public class IChargeBillServiceImpl implements IChargeBillService {
List<Invoice> invoiceList = iInvoiceService.list(new LambdaUpdateWrapper<Invoice>() List<Invoice> invoiceList = iInvoiceService.list(new LambdaUpdateWrapper<Invoice>()
.in(Invoice::getReconciliationId, returnIds).eq(Invoice::getDeleteFlag, DelFlag.NO.getCode())); .in(Invoice::getReconciliationId, returnIds).eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()));
if (!invoiceList.isEmpty()) { if (!invoiceList.isEmpty()) {
Map<Long, List<Invoice>> invoiceKV = Map<Long, List<Invoice>> invoiceKV
invoiceList.stream().collect(Collectors.groupingBy(Invoice::getReconciliationId)); = invoiceList.stream().collect(Collectors.groupingBy(Invoice::getReconciliationId));
for (PaymentReconciliationAccountDel paymentReconciliation : returnList) { for (PaymentReconciliationAccountDel paymentReconciliation : returnList) {
returnBillVO = new ReturnBillVO(); returnBillVO = new ReturnBillVO();
returnBillVO.setTotalAmount(paymentReconciliation.getTenderedAmount()); returnBillVO.setTotalAmount(paymentReconciliation.getTenderedAmount());
List<PaymentRecDetailAccountResult> paymentRecDetails = List<PaymentRecDetailAccountResult> paymentRecDetails
paymentDetailsKV.get(paymentReconciliation.getId()); = paymentDetailsKV.get(paymentReconciliation.getId());
for (PaymentRecDetailAccountResult paymentRecDetail : paymentRecDetails) { for (PaymentRecDetailAccountResult paymentRecDetail : paymentRecDetails) {
if (YbPayment.SELF_CASH_PAY.getValue().equals(paymentRecDetail.getPayEnum())) { if (YbPayment.SELF_CASH_PAY.getValue().equals(paymentRecDetail.getPayEnum())) {
returnBillVO.setPaidAmount(paymentRecDetail.getAmount()); returnBillVO.setPaidAmount(paymentRecDetail.getAmount());
@@ -1894,11 +1882,10 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// map.put("tcSum", tcSum);// 基本统筹 // map.put("tcSum", tcSum);// 基本统筹
// map.put("zhSum", zhSum);// 账户支付 // map.put("zhSum", zhSum);// 账户支付
// map.put("fundSum", fundSum);// 基金支付总额 // map.put("fundSum", fundSum);// 基金支付总额
// 医保人次自费人次计算 // 医保人次自费人次计算
List<EncounterAccountDto> list = iEncounterService.getEncounterInfoByTime(startDate, endDate); List<EncounterAccountDto> list = iEncounterService.getEncounterInfoByTime(startDate, endDate);
Map<String, List<EncounterAccountDto>> encounterAccountDtoMapByContract = Map<String, List<EncounterAccountDto>> encounterAccountDtoMapByContract
list.stream().collect(Collectors.groupingBy(EncounterAccountDto::getContractNo)); = list.stream().collect(Collectors.groupingBy(EncounterAccountDto::getContractNo));
for (Map.Entry<String, List<EncounterAccountDto>> stringListEntry : encounterAccountDtoMapByContract for (Map.Entry<String, List<EncounterAccountDto>> stringListEntry : encounterAccountDtoMapByContract
.entrySet()) { .entrySet()) {
String key = stringListEntry.getKey(); String key = stringListEntry.getKey();
@@ -2032,8 +2019,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice()); ? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice());
break; break;
case CHINESE_MEDICINE_SLICES_FEE: case CHINESE_MEDICINE_SLICES_FEE:
tyChineseMedicineSlicesFee = tyChineseMedicineSlicesFee
tyChineseMedicineSlicesFee.add(chargeItem.getSystemDiscountPrice() == null = tyChineseMedicineSlicesFee.add(chargeItem.getSystemDiscountPrice() == null
? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice()); ? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice());
break; break;
case CHINESE_MEDICINE_FEE: case CHINESE_MEDICINE_FEE:
@@ -2109,8 +2096,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice()); ? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice());
break; break;
case CHINESE_MEDICINE_SLICES_FEE: case CHINESE_MEDICINE_SLICES_FEE:
tyChineseMedicineSlicesFee = tyChineseMedicineSlicesFee
tyChineseMedicineSlicesFee.subtract(chargeItem.getSystemDiscountPrice() == null = tyChineseMedicineSlicesFee.subtract(chargeItem.getSystemDiscountPrice() == null
? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice()); ? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice());
break; break;
case CHINESE_MEDICINE_FEE: case CHINESE_MEDICINE_FEE:
@@ -2118,8 +2105,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice()); ? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice());
break; break;
case GENERAL_CONSULTATION_FEE: case GENERAL_CONSULTATION_FEE:
tyGeneralConsultationFee = tyGeneralConsultationFee
tyGeneralConsultationFee.subtract(chargeItem.getSystemDiscountPrice() == null = tyGeneralConsultationFee.subtract(chargeItem.getSystemDiscountPrice() == null
? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice()); ? chargeItem.getTotalPrice() : chargeItem.getSystemDiscountPrice());
break; break;
case REGISTRATION_FEE: case REGISTRATION_FEE:
@@ -2236,13 +2223,13 @@ public class IChargeBillServiceImpl implements IChargeBillService {
.map(Long::valueOf) // 转换为Long .map(Long::valueOf) // 转换为Long
.collect(Collectors.toList()); .collect(Collectors.toList());
List<ChargeItemExtendInfoDto> ChargeItemExtendInfoDtoList = List<ChargeItemExtendInfoDto> ChargeItemExtendInfoDtoList
chargeBillMapper.selectChargeItemExtendInfoList(chargeItemIds, chargeSummaryDto.getOrgIdList()); = chargeBillMapper.selectChargeItemExtendInfoList(chargeItemIds, chargeSummaryDto.getOrgIdList());
Map<Long, List<ChargeItemExtendInfoDto>> chargeItemExtendInfoDtoListGroupByOrgIdMap = Map<Long, List<ChargeItemExtendInfoDto>> chargeItemExtendInfoDtoListGroupByOrgIdMap
ChargeItemExtendInfoDtoList.stream().collect(Collectors.groupingBy(ChargeItemExtendInfoDto::getOrgId)); = ChargeItemExtendInfoDtoList.stream().collect(Collectors.groupingBy(ChargeItemExtendInfoDto::getOrgId));
LambdaQueryWrapper<Organization> organizationLambdaQueryWrapper = LambdaQueryWrapper<Organization> organizationLambdaQueryWrapper
new LambdaQueryWrapper<Organization>().eq(Organization::getTypeEnum, OrganizationType.DEPARTMENT.getValue()) = new LambdaQueryWrapper<Organization>().eq(Organization::getTypeEnum, OrganizationType.DEPARTMENT.getValue())
.eq(Organization::getDeleteFlag, DelFlag.NO.getCode()).orderByDesc(Organization::getDisplayOrder); .eq(Organization::getDeleteFlag, DelFlag.NO.getCode()).orderByDesc(Organization::getDisplayOrder);
if (chargeSummaryDto.getOrgIdList() != null && !chargeSummaryDto.getOrgIdList().isEmpty()) { if (chargeSummaryDto.getOrgIdList() != null && !chargeSummaryDto.getOrgIdList().isEmpty()) {
organizationLambdaQueryWrapper.in(Organization::getId, chargeSummaryDto.getOrgIdList()); organizationLambdaQueryWrapper.in(Organization::getId, chargeSummaryDto.getOrgIdList());
@@ -2256,8 +2243,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
for (Organization organization : organizationList) { for (Organization organization : organizationList) {
orgIncomeDto = new OrgIncomeDto(); orgIncomeDto = new OrgIncomeDto();
orgIncomeDto.setOrgName(organization.getName()); orgIncomeDto.setOrgName(organization.getName());
List<ChargeItemExtendInfoDto> chargeItemExtendInfoDtos = List<ChargeItemExtendInfoDto> chargeItemExtendInfoDtos
chargeItemExtendInfoDtoListGroupByOrgIdMap.get(organization.getId()); = chargeItemExtendInfoDtoListGroupByOrgIdMap.get(organization.getId());
if (chargeItemExtendInfoDtos == null) { if (chargeItemExtendInfoDtos == null) {
orgIncomeList.add(orgIncomeDto); orgIncomeList.add(orgIncomeDto);
continue; continue;
@@ -2528,8 +2515,8 @@ public class IChargeBillServiceImpl implements IChargeBillService {
List<PaymentReconciliation> list = paymentReconciliationService.list( List<PaymentReconciliation> list = paymentReconciliationService.list(
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getDeleteFlag, new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getDeleteFlag,
DelFlag.NO.getCode()).eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue()) DelFlag.NO.getCode()).eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue())
.between(PaymentReconciliation::getBillDate, Date.from(LocalDateTime.parse("2025-12-01 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()) .between(PaymentReconciliation::getBillDate, Date.from(LocalDateTime.parse("2025-12-01 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()),
, Date.from(LocalDateTime.parse("2025-12-31 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()))); Date.from(LocalDateTime.parse("2025-12-31 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant())));
for (PaymentReconciliation paymentReconciliation : list) { for (PaymentReconciliation paymentReconciliation : list) {
@@ -2598,7 +2585,6 @@ public class IChargeBillServiceImpl implements IChargeBillService {
// BigDecimal b = BigDecimal.ZERO;// 实付金额与药品金额差值即待分配金额 // BigDecimal b = BigDecimal.ZERO;// 实付金额与药品金额差值即待分配金额
// BigDecimal c = BigDecimal.ZERO;// 诊疗检查等项目的合计金额 // BigDecimal c = BigDecimal.ZERO;// 诊疗检查等项目的合计金额
// BigDecimal d = paymentReconciliation.getTenderedAmount().subtract(paymentRecDetail.getAmount());// 实际交款金额 // BigDecimal d = paymentReconciliation.getTenderedAmount().subtract(paymentRecDetail.getAmount());// 实际交款金额
List<ChargeItem> newChargeItemList = new ArrayList<>(); List<ChargeItem> newChargeItemList = new ArrayList<>();
for (ChargeItemDefInfo chargeItemDefInfo : chargeItemDefInfoByIdList) { for (ChargeItemDefInfo chargeItemDefInfo : chargeItemDefInfoByIdList) {

View File

@@ -200,8 +200,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// 此次chargeItem的就诊诊断id集合 // 此次chargeItem的就诊诊断id集合
List<Long> diagIdList = List<Long> diagIdList
chargeItemList.stream().map(ChargeItem::getEncounterDiagnosisId).collect(Collectors.toList()); = chargeItemList.stream().map(ChargeItem::getEncounterDiagnosisId).collect(Collectors.toList());
if (diagIdList.isEmpty()) { if (diagIdList.isEmpty()) {
throw new ServiceException("收费项的就诊诊断查询为空"); throw new ServiceException("收费项的就诊诊断查询为空");
} }
@@ -210,8 +210,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (diagList.isEmpty()) { if (diagList.isEmpty()) {
throw new ServiceException("就诊诊断查询为空错误信息EncounterDiagnosis"); throw new ServiceException("就诊诊断查询为空错误信息EncounterDiagnosis");
} }
List<String> medTypeList = List<String> medTypeList
diagList.stream().map(EncounterDiagnosis::getMedTypeCode).distinct().collect(Collectors.toList()); = diagList.stream().map(EncounterDiagnosis::getMedTypeCode).distinct().collect(Collectors.toList());
if (medTypeList.size() > 1) { if (medTypeList.size() > 1) {
return R.fail("收费项的就诊类型未统一"); return R.fail("收费项的就诊类型未统一");
} }
@@ -227,8 +227,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// 账户id对应的账单列表 // 账户id对应的账单列表
Map<Long, List<ChargeItem>> chargeItemMapByAccountId = Map<Long, List<ChargeItem>> chargeItemMapByAccountId
chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getAccountId)); = chargeItemList.stream().collect(Collectors.groupingBy(ChargeItem::getAccountId));
// 查询合同信息 // 查询合同信息
List<Contract> contractList = contractService.list(); List<Contract> contractList = contractService.list();
@@ -256,8 +256,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
prePaymentedItems.add(piModel); prePaymentedItems.add(piModel);
} else { } else {
try { try {
List<ChargeItem> childrenList = List<ChargeItem> childrenList
JSON.parseArray(chargeItem.getChildrenJson(), ChargeItem.class); = JSON.parseArray(chargeItem.getChildrenJson(), ChargeItem.class);
for (ChargeItem child : childrenList) { for (ChargeItem child : childrenList) {
PaymentedItemModel piModel = ConverterToPaymenItemModel(diagList, child); PaymentedItemModel piModel = ConverterToPaymenItemModel(diagList, child);
prePaymentedItems.add(piModel); prePaymentedItems.add(piModel);
@@ -367,8 +367,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
return R.fail("该账单不是待支付账单"); return R.fail("该账单不是待支付账单");
} }
// 查找对应的收费详情,根据批次号查询 // 查找对应的收费详情,根据批次号查询
List<PaymentRecDetail> paymentRecDetails = List<PaymentRecDetail> paymentRecDetails
paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>() = paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>()
.eq(PaymentRecDetail::getReconciliationId, paymentReconciliation.getId())); .eq(PaymentRecDetail::getReconciliationId, paymentReconciliation.getId()));
if (paymentRecDetails.isEmpty()) { if (paymentRecDetails.isEmpty()) {
return R.fail("查询不到收费详情"); return R.fail("查询不到收费详情");
@@ -378,31 +378,6 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
return R.fail("收费项目变动,请重新预结算"); return R.fail("收费项目变动,请重新预结算");
} }
<<<<<<< HEAD
//2025.11.4 长大发生异常相同的chargeItem存在两个payment并重复收费要求在此处增加校验
// 经研究最优解为在数据库中查询本次就诊的所有的chargeItemIds与现有chargeItemId进行匹配
List<PaymentReconciliation> paymentReconciliationList = paymentReconciliationService.getListByEncounterId(paymentDto.getEncounterId(), PaymentKind.OUTPATIENT_CLINIC);
List<Long> chargeItemIds = paymentDto.getChargeItemIds();
if(!paymentReconciliationList.isEmpty()){
// 收集所有元素(包含重复)
List<String> allElements = paymentReconciliationList.stream()
.map(PaymentReconciliation::getChargeItemIds) // 获取逗号拼接的字符串
.filter(str -> str != null && !str.trim().isEmpty()) // 过滤空值
.flatMap(str -> Arrays.stream(str.split(","))) // 拆分成单个元素
.map(String::trim) // 去除空格
.filter(s -> !s.isEmpty()) // 过滤空字符串
.collect(Collectors.toList());
for (Long chargeItemId : chargeItemIds) {
Optional<String> first = allElements.stream()
.filter(item -> item.equals(chargeItemId.toString()))
.findFirst();
if(first.isPresent()){
throw new ServiceException("收费项目id"+chargeItemId+"已经收费过了,请确认");
=======
// 2025.11.4 长大发生异常相同的chargeItem存在两个payment并重复收费要求在此处增加校验 // 2025.11.4 长大发生异常相同的chargeItem存在两个payment并重复收费要求在此处增加校验
// 经研究最优解为在数据库中查询本次就诊的所有的chargeItemIds与现有chargeItemId进行匹配 // 经研究最优解为在数据库中查询本次就诊的所有的chargeItemIds与现有chargeItemId进行匹配
List<PaymentReconciliation> paymentReconciliationList = paymentReconciliationService List<PaymentReconciliation> paymentReconciliationList = paymentReconciliationService
@@ -420,21 +395,15 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
.collect(Collectors.toList()); .collect(Collectors.toList());
for (Long chargeItemId : chargeItemIds) { for (Long chargeItemId : chargeItemIds) {
Optional<String> first = Optional<String> first
allElements.stream().filter(item -> item.equals(chargeItemId.toString())).findFirst(); = allElements.stream().filter(item -> item.equals(chargeItemId.toString())).findFirst();
if (first.isPresent()) { if (first.isPresent()) {
throw new ServiceException("收费项目id" + chargeItemId + "已经收费过了,请确认"); throw new ServiceException("收费项目id" + chargeItemId + "已经收费过了,请确认");
>>>>>>> v1.3
} }
} }
} }
<<<<<<< HEAD
=======
>>>>>>> v1.3
// 校验金额:前台输入金额与仍需支付的现金部分进行比较 // 校验金额:前台输入金额与仍需支付的现金部分进行比较
BigDecimal sum = BigDecimal.ZERO; BigDecimal sum = BigDecimal.ZERO;
PaymentRecDetail paymentRecDetailDemo = new PaymentRecDetail(); PaymentRecDetail paymentRecDetailDemo = new PaymentRecDetail();
@@ -481,8 +450,10 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
Integer mcsTracCnt = 0; Integer mcsTracCnt = 0;
chargeItemList.forEach(item -> { chargeItemList.forEach(item -> {
switch (item.getServiceTable()) { switch (item.getServiceTable()) {
case CommonConstants.TableName.MED_MEDICATION_REQUEST -> medReqIdList.add(item.getServiceId()); case CommonConstants.TableName.MED_MEDICATION_REQUEST ->
case CommonConstants.TableName.WOR_DEVICE_REQUEST -> devReqIdList.add(item.getServiceId()); medReqIdList.add(item.getServiceId());
case CommonConstants.TableName.WOR_DEVICE_REQUEST ->
devReqIdList.add(item.getServiceId());
} }
}); });
// 根据药品请求计算本次结算应上传最小包装药品追溯码数量 // 根据药品请求计算本次结算应上传最小包装药品追溯码数量
@@ -490,11 +461,11 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
List<MedicationRequest> medicationRequestList = medicationRequestService List<MedicationRequest> medicationRequestList = medicationRequestService
.list(new LambdaQueryWrapper<MedicationRequest>().in(MedicationRequest::getId, medReqIdList)); .list(new LambdaQueryWrapper<MedicationRequest>().in(MedicationRequest::getId, medReqIdList));
if (!medicationRequestList.isEmpty()) { if (!medicationRequestList.isEmpty()) {
List<Long> medicationIdList = List<Long> medicationIdList
medicationRequestList.stream().map(MedicationRequest::getMedicationId).distinct().toList(); = medicationRequestList.stream().map(MedicationRequest::getMedicationId).distinct().toList();
// 根据药品id获取药品定义 // 根据药品id获取药品定义
List<MedicationDefinition> medicationDefinitionList = List<MedicationDefinition> medicationDefinitionList
medicationDefinitionService.listByIds(medicationIdList); = medicationDefinitionService.listByIds(medicationIdList);
if (!medicationDefinitionList.isEmpty()) { if (!medicationDefinitionList.isEmpty()) {
// 创建药品定义map // 创建药品定义map
Map<Long, MedicationDefinition> medicationDefinitionMap = medicationDefinitionList.stream() Map<Long, MedicationDefinition> medicationDefinitionMap = medicationDefinitionList.stream()
@@ -503,8 +474,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
BigDecimal totalQuantity = BigDecimal.ZERO; BigDecimal totalQuantity = BigDecimal.ZERO;
for (MedicationRequest medicationRequest : medicationRequestList) { for (MedicationRequest medicationRequest : medicationRequestList) {
MedicationDefinition medicationDefinition = MedicationDefinition medicationDefinition
medicationDefinitionMap.get(medicationRequest.getMedicationId()); = medicationDefinitionMap.get(medicationRequest.getMedicationId());
if (medicationDefinition != null) { if (medicationDefinition != null) {
BigDecimal requestQuantity = medicationRequest.getQuantity(); BigDecimal requestQuantity = medicationRequest.getQuantity();
// 根据是否拆零计算 // 根据是否拆零计算
@@ -536,8 +507,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
// } // }
// 收费详情按照收费批次进行分组 // 收费详情按照收费批次进行分组
Map<String, List<PaymentRecDetail>> payTransNoMap = Map<String, List<PaymentRecDetail>> payTransNoMap
paymentRecDetails.stream().collect(Collectors.groupingBy(PaymentRecDetail::getPayTransNo)); = paymentRecDetails.stream().collect(Collectors.groupingBy(PaymentRecDetail::getPayTransNo));
com.openhis.financial.model.PaymentResult paymentResult; com.openhis.financial.model.PaymentResult paymentResult;
List<com.openhis.financial.model.PaymentResult> paymentResultList = new ArrayList<>(); List<com.openhis.financial.model.PaymentResult> paymentResultList = new ArrayList<>();
@@ -626,8 +597,10 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
switch (item.getServiceTable()) { switch (item.getServiceTable()) {
case CommonConstants.TableName.MED_MEDICATION_REQUEST -> case CommonConstants.TableName.MED_MEDICATION_REQUEST ->
medicationRequestIdList.add(item.getServiceId()); medicationRequestIdList.add(item.getServiceId());
case CommonConstants.TableName.WOR_DEVICE_REQUEST -> deviceRequestIdList.add(item.getServiceId()); case CommonConstants.TableName.WOR_DEVICE_REQUEST ->
case CommonConstants.TableName.WOR_SERVICE_REQUEST -> serviceRequestIdList.add(item.getServiceId()); deviceRequestIdList.add(item.getServiceId());
case CommonConstants.TableName.WOR_SERVICE_REQUEST ->
serviceRequestIdList.add(item.getServiceId());
} }
}); });
@@ -687,8 +660,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
throw new ServiceException("请勿重复退费"); throw new ServiceException("请勿重复退费");
} }
// 查找对应的收费详情 // 查找对应的收费详情
List<PaymentRecDetail> PaymentRecDetails = List<PaymentRecDetail> PaymentRecDetails
paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>() = paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>()
.eq(PaymentRecDetail::getReconciliationId, cancelPaymentDto.getId())); .eq(PaymentRecDetail::getReconciliationId, cancelPaymentDto.getId()));
// 查询账户信息 // 查询账户信息
// Account account = iAccountService.getById(paymentReconciliation.getAccountId()); // Account account = iAccountService.getById(paymentReconciliation.getAccountId());
@@ -725,8 +698,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
clinic2208UnSetlInfoOutput = (Clinic2208UnSetlInfoOutput) r.getData(); clinic2208UnSetlInfoOutput = (Clinic2208UnSetlInfoOutput) r.getData();
stringBuilder.append(clinic2208UnSetlInfoOutput.getSetlId()).append(","); stringBuilder.append(clinic2208UnSetlInfoOutput.getSetlId()).append(",");
// 对payment详情的结算id进行处理 // 对payment详情的结算id进行处理
List<PaymentRecDetail> paymentRecDetailList = List<PaymentRecDetail> paymentRecDetailList
iPaymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>() = iPaymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>()
.eq(PaymentRecDetail::getReconciliationId, unPaymentReconciliation.getId()) .eq(PaymentRecDetail::getReconciliationId, unPaymentReconciliation.getId())
.eq(PaymentRecDetail::getPayTransText, clinicSettle.getSetlId())); .eq(PaymentRecDetail::getPayTransText, clinicSettle.getSetlId()));
if (!paymentRecDetailList.isEmpty()) { if (!paymentRecDetailList.isEmpty()) {
@@ -763,8 +736,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
throw new ServiceException("重新预结算失败请联系工程师"); throw new ServiceException("重新预结算失败请联系工程师");
} }
PrePaymentResultModel prePaymentResultModel = PrePaymentResultModel prePaymentResultModel
JSON.parseObject(JSON.toJSONString(preResult.getData()), PrePaymentResultModel.class); = JSON.parseObject(JSON.toJSONString(preResult.getData()), PrePaymentResultModel.class);
// 新的应收 // 新的应收
BigDecimal cashPay = BigDecimal.ZERO; BigDecimal cashPay = BigDecimal.ZERO;
for (PaymentRecDetailDto paymentRecDetail : prePaymentResultModel.getDetails()) { for (PaymentRecDetailDto paymentRecDetail : prePaymentResultModel.getDetails()) {
@@ -797,8 +770,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// 获取新的付款参数表 // 获取新的付款参数表
PaymentReconciliation payment = PaymentReconciliation payment
JSON.parseObject(JSON.toJSONString(settleResult.getData()), PaymentReconciliation.class); = JSON.parseObject(JSON.toJSONString(settleResult.getData()), PaymentReconciliation.class);
// 获取实付金额 // 获取实付金额
List<PaymentRecDetail> paymentRecDetail = paymentRecDetailService.list( List<PaymentRecDetail> paymentRecDetail = paymentRecDetailService.list(
new LambdaQueryWrapper<PaymentRecDetail>().eq(PaymentRecDetail::getReconciliationId, payment.getId()) new LambdaQueryWrapper<PaymentRecDetail>().eq(PaymentRecDetail::getReconciliationId, payment.getId())
@@ -843,8 +816,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
throw new ServiceException("查询不到付款记录"); throw new ServiceException("查询不到付款记录");
} }
PaymentReconciliation unPaymentReconciliation = PaymentReconciliation unPaymentReconciliation
normalUnCharge(paymentReconciliation, paymentRecDetails, cancelPaymentDto.getSetlId(), cancelPaymentDto.getReason()); = normalUnCharge(paymentReconciliation, paymentRecDetails, cancelPaymentDto.getSetlId(), cancelPaymentDto.getReason());
return R.ok(unPaymentReconciliation); return R.ok(unPaymentReconciliation);
} }
@@ -873,8 +846,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
request); request);
// queryWrapper.eq(PaymentVO::getStatusEnum,PaymentStatus.SUCCESS.getValue()).or().eq(PaymentVO::getStatusEnum,PaymentStatus.REFUND_ALL.getValue()); // queryWrapper.eq(PaymentVO::getStatusEnum,PaymentStatus.SUCCESS.getValue()).or().eq(PaymentVO::getStatusEnum,PaymentStatus.REFUND_ALL.getValue());
queryWrapper.in("status_enum", PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue()); queryWrapper.in("status_enum", PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue());
IPage<PaymentVO> paymentDtoIPage = IPage<PaymentVO> paymentDtoIPage
paymentMapper.getPage(new Page<>(pageNo, pageSize), kingEnum, invoiceNo, queryWrapper); = paymentMapper.getPage(new Page<>(pageNo, pageSize), kingEnum, invoiceNo, queryWrapper);
for (PaymentVO record : paymentDtoIPage.getRecords()) { for (PaymentVO record : paymentDtoIPage.getRecords()) {
record.setPaymentId(record.getId().toString()); record.setPaymentId(record.getId().toString());
@@ -889,7 +862,6 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
// // 计算年龄 // // 计算年龄
// e.setAgeString(AgeCalculatorUtil.getAge(DateUtils.parseDate(e.getBirthDate()))); // e.setAgeString(AgeCalculatorUtil.getAge(DateUtils.parseDate(e.getBirthDate())));
// }); // });
return paymentDtoIPage; return paymentDtoIPage;
} }
@@ -986,11 +958,7 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
*/ */
private List<PaymentRecDetail> savePaymentDetail(List<PrePaymentResult> prePaymentResults, private List<PaymentRecDetail> savePaymentDetail(List<PrePaymentResult> prePaymentResults,
PaymentReconciliation payment) { PaymentReconciliation payment) {
<<<<<<< HEAD
// 11.11 paymentDetail的amount在11.7日按照同一的异常日结单要求改为保留两位小数后于11.11又被要求改为保留六位小数 // 11.11 paymentDetail的amount在11.7日按照同一的异常日结单要求改为保留两位小数后于11.11又被要求改为保留六位小数
=======
// 11.11 paymentDetail的amount在11.7日按照同一的异常日结单要求改为保留两位小数后于11.11又被要求改为保留六位小数
>>>>>>> v1.3
// 保存付款详情 // 保存付款详情
List<PaymentRecDetail> paymentRecDetails = new ArrayList<>(); List<PaymentRecDetail> paymentRecDetails = new ArrayList<>();
for (PrePaymentResult prePaymentResult : prePaymentResults) { for (PrePaymentResult prePaymentResult : prePaymentResults) {
@@ -1000,12 +968,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (psnCashPay != null) { if (psnCashPay != null) {
PaymentRecDetail paymentRecDetail10 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail10 = new PaymentRecDetail();
paymentRecDetail10.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SELF_CASH_PAY.getValue()) paymentRecDetail10.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SELF_CASH_PAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.SELF_CASH_PAY.getLevel()).setAmount(psnCashPay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.SELF_CASH_PAY.getLevel()) .setPayLevelEnum(YbPayment.SELF_CASH_PAY.getLevel())
.setAmount(psnCashPay.setScale(6, RoundingMode.HALF_UP)) .setAmount(psnCashPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail10); paymentRecDetails.add(paymentRecDetail10);
@@ -1016,12 +980,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (psnPartAmt != null) { if (psnPartAmt != null) {
PaymentRecDetail paymentRecDetail1 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail1 = new PaymentRecDetail();
paymentRecDetail1.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SELF_PAY.getValue()) paymentRecDetail1.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SELF_PAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.SELF_PAY.getLevel()).setAmount(psnPartAmt.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.SELF_PAY.getLevel()) .setPayLevelEnum(YbPayment.SELF_PAY.getLevel())
.setAmount(psnPartAmt.setScale(6, RoundingMode.HALF_UP)) .setAmount(psnPartAmt.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail1); paymentRecDetails.add(paymentRecDetail1);
@@ -1032,15 +992,9 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail2 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail2 = new PaymentRecDetail();
paymentRecDetail2.setReconciliationId(payment.getId()) paymentRecDetail2.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.YB_TC_FUND_AMOUNT.getValue()) .setPayEnum(YbPayment.YB_TC_FUND_AMOUNT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_TC_FUND_AMOUNT.getLevel()).setAmount(hifpPay.setScale(6,RoundingMode.HALF_UP))
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId());
=======
.setPayLevelEnum(YbPayment.YB_TC_FUND_AMOUNT.getLevel()) .setPayLevelEnum(YbPayment.YB_TC_FUND_AMOUNT.getLevel())
.setAmount(hifpPay.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno()) .setAmount(hifpPay.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno())
.setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId()); .setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId());
>>>>>>> v1.3
paymentRecDetails.add(paymentRecDetail2); paymentRecDetails.add(paymentRecDetail2);
} }
@@ -1050,12 +1004,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail3 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail3 = new PaymentRecDetail();
paymentRecDetail3.setReconciliationId(payment.getId()) paymentRecDetail3.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.YB_BC_GWY_BZ_VALUE.getValue()) .setPayEnum(YbPayment.YB_BC_GWY_BZ_VALUE.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_BC_GWY_BZ_VALUE.getLevel()).setAmount(cvlservPay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.YB_BC_GWY_BZ_VALUE.getLevel()) .setPayLevelEnum(YbPayment.YB_BC_GWY_BZ_VALUE.getLevel())
.setAmount(cvlservPay.setScale(6, RoundingMode.HALF_UP)) .setAmount(cvlservPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail3); paymentRecDetails.add(paymentRecDetail3);
@@ -1066,12 +1016,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail4 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail4 = new PaymentRecDetail();
paymentRecDetail4.setReconciliationId(payment.getId()) paymentRecDetail4.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.YB_BC_FUND_AMOUNT.getValue()) .setPayEnum(YbPayment.YB_BC_FUND_AMOUNT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_BC_FUND_AMOUNT.getLevel()).setAmount(hifesPay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.YB_BC_FUND_AMOUNT.getLevel()) .setPayLevelEnum(YbPayment.YB_BC_FUND_AMOUNT.getLevel())
.setAmount(hifesPay.setScale(6, RoundingMode.HALF_UP)) .setAmount(hifesPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail4); paymentRecDetails.add(paymentRecDetail4);
@@ -1082,12 +1028,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail5 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail5 = new PaymentRecDetail();
paymentRecDetail5.setReconciliationId(payment.getId()) paymentRecDetail5.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.YB_BC_JM_DB_VALUE.getValue()) .setPayEnum(YbPayment.YB_BC_JM_DB_VALUE.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_BC_JM_DB_VALUE.getLevel()).setAmount(hifmiPay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.YB_BC_JM_DB_VALUE.getLevel()) .setPayLevelEnum(YbPayment.YB_BC_JM_DB_VALUE.getLevel())
.setAmount(hifmiPay.setScale(6, RoundingMode.HALF_UP)) .setAmount(hifmiPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail5); paymentRecDetails.add(paymentRecDetail5);
@@ -1097,12 +1039,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (hifobPay != null) { if (hifobPay != null) {
PaymentRecDetail paymentRecDetail6 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail6 = new PaymentRecDetail();
paymentRecDetail6.setReconciliationId(payment.getId()).setPayTransNo(prePaymentResult.getChrgBchno()) paymentRecDetail6.setReconciliationId(payment.getId()).setPayTransNo(prePaymentResult.getChrgBchno())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_BC_ZG_DE_BZ_VALUE.getLevel()).setAmount(hifobPay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.YB_BC_ZG_DE_BZ_VALUE.getLevel()) .setPayLevelEnum(YbPayment.YB_BC_ZG_DE_BZ_VALUE.getLevel())
.setAmount(hifobPay.setScale(6, RoundingMode.HALF_UP)) .setAmount(hifobPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayEnum(YbPayment.YB_BC_ZG_DE_BZ_VALUE.getValue()) .setPayEnum(YbPayment.YB_BC_ZG_DE_BZ_VALUE.getValue())
.setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId()); .setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail6); paymentRecDetails.add(paymentRecDetail6);
@@ -1113,15 +1051,9 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail7 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail7 = new PaymentRecDetail();
paymentRecDetail7.setReconciliationId(payment.getId()) paymentRecDetail7.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.YB_JZ_FUND_AMOUNT.getValue()) .setPayEnum(YbPayment.YB_JZ_FUND_AMOUNT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_JZ_FUND_AMOUNT.getLevel()).setAmount(mafPay.setScale(6,RoundingMode.HALF_UP))
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId());
=======
.setPayLevelEnum(YbPayment.YB_JZ_FUND_AMOUNT.getLevel()) .setPayLevelEnum(YbPayment.YB_JZ_FUND_AMOUNT.getLevel())
.setAmount(mafPay.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno()) .setAmount(mafPay.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno())
.setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId()); .setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId());
>>>>>>> v1.3
paymentRecDetails.add(paymentRecDetail7); paymentRecDetails.add(paymentRecDetail7);
} }
// 其他支出 // 其他支出
@@ -1129,11 +1061,7 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (othPay != null) { if (othPay != null) {
PaymentRecDetail paymentRecDetail8 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail8 = new PaymentRecDetail();
paymentRecDetail8.setReconciliationId(payment.getId()).setPayEnum(YbPayment.OTHER_PAY.getValue()) paymentRecDetail8.setReconciliationId(payment.getId()).setPayEnum(YbPayment.OTHER_PAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.OTHER_PAY.getLevel()).setAmount(othPay.setScale(6, RoundingMode.HALF_UP)) .setPayLevelEnum(YbPayment.OTHER_PAY.getLevel()).setAmount(othPay.setScale(6, RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.OTHER_PAY.getLevel()).setAmount(othPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail8); paymentRecDetails.add(paymentRecDetail8);
@@ -1143,12 +1071,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (fundPaySumamt != null) { if (fundPaySumamt != null) {
PaymentRecDetail paymentRecDetail9 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail9 = new PaymentRecDetail();
paymentRecDetail9.setReconciliationId(payment.getId()).setPayEnum(YbPayment.YB_FUND_PAY.getValue()) paymentRecDetail9.setReconciliationId(payment.getId()).setPayEnum(YbPayment.YB_FUND_PAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.YB_FUND_PAY.getLevel()).setAmount(fundPaySumamt.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.YB_FUND_PAY.getLevel()) .setPayLevelEnum(YbPayment.YB_FUND_PAY.getLevel())
.setAmount(fundPaySumamt.setScale(6, RoundingMode.HALF_UP)) .setAmount(fundPaySumamt.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail9); paymentRecDetails.add(paymentRecDetail9);
@@ -1158,15 +1082,9 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (acctPay != null) { if (acctPay != null) {
PaymentRecDetail paymentRecDetail11 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail11 = new PaymentRecDetail();
paymentRecDetail11.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SELF_YB_ZH_PAY.getValue()) paymentRecDetail11.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SELF_YB_ZH_PAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.SELF_YB_ZH_PAY.getLevel()).setAmount(acctPay.setScale(6,RoundingMode.HALF_UP))
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId());
=======
.setPayLevelEnum(YbPayment.SELF_YB_ZH_PAY.getLevel()) .setPayLevelEnum(YbPayment.SELF_YB_ZH_PAY.getLevel())
.setAmount(acctPay.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno()) .setAmount(acctPay.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno())
.setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId()); .setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId());
>>>>>>> v1.3
paymentRecDetails.add(paymentRecDetail11); paymentRecDetails.add(paymentRecDetail11);
} }
// 医院负担金额 // 医院负担金额
@@ -1174,12 +1092,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (hospPartAmt != null) { if (hospPartAmt != null) {
PaymentRecDetail paymentRecDetail12 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail12 = new PaymentRecDetail();
paymentRecDetail12.setReconciliationId(payment.getId()).setPayEnum(YbPayment.HOSP_PART_AMT.getValue()) paymentRecDetail12.setReconciliationId(payment.getId()).setPayEnum(YbPayment.HOSP_PART_AMT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.HOSP_PART_AMT.getLevel()).setAmount(hospPartAmt.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.HOSP_PART_AMT.getLevel()) .setPayLevelEnum(YbPayment.HOSP_PART_AMT.getLevel())
.setAmount(hospPartAmt.setScale(6, RoundingMode.HALF_UP)) .setAmount(hospPartAmt.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail12); paymentRecDetails.add(paymentRecDetail12);
@@ -1190,12 +1104,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail13 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail13 = new PaymentRecDetail();
paymentRecDetail13.setReconciliationId(payment.getId()) paymentRecDetail13.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.SELF_YB_ZH_GJ_VALUE.getValue()) .setPayEnum(YbPayment.SELF_YB_ZH_GJ_VALUE.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.SELF_YB_ZH_GJ_VALUE.getLevel()).setAmount(acctMulaidPay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.SELF_YB_ZH_GJ_VALUE.getLevel()) .setPayLevelEnum(YbPayment.SELF_YB_ZH_GJ_VALUE.getLevel())
.setAmount(acctMulaidPay.setScale(6, RoundingMode.HALF_UP)) .setAmount(acctMulaidPay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail13); paymentRecDetails.add(paymentRecDetail13);
@@ -1206,12 +1116,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentRecDetail paymentRecDetail14 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail14 = new PaymentRecDetail();
paymentRecDetail14.setReconciliationId(payment.getId()) paymentRecDetail14.setReconciliationId(payment.getId())
.setPayEnum(YbPayment.FULAMT_OWNPAY_AMT.getValue()) .setPayEnum(YbPayment.FULAMT_OWNPAY_AMT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.FULAMT_OWNPAY_AMT.getLevel()).setAmount(fulamtOwnpayAmt.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.FULAMT_OWNPAY_AMT.getLevel()) .setPayLevelEnum(YbPayment.FULAMT_OWNPAY_AMT.getLevel())
.setAmount(fulamtOwnpayAmt.setScale(6, RoundingMode.HALF_UP)) .setAmount(fulamtOwnpayAmt.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail14); paymentRecDetails.add(paymentRecDetail14);
@@ -1221,12 +1127,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (overlmtSelfpay != null) { if (overlmtSelfpay != null) {
PaymentRecDetail paymentRecDetail15 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail15 = new PaymentRecDetail();
paymentRecDetail15.setReconciliationId(payment.getId()).setPayEnum(YbPayment.OVERLMT_SELFPAY.getValue()) paymentRecDetail15.setReconciliationId(payment.getId()).setPayEnum(YbPayment.OVERLMT_SELFPAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.OVERLMT_SELFPAY.getLevel()).setAmount(overlmtSelfpay.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.OVERLMT_SELFPAY.getLevel()) .setPayLevelEnum(YbPayment.OVERLMT_SELFPAY.getLevel())
.setAmount(overlmtSelfpay.setScale(6, RoundingMode.HALF_UP)) .setAmount(overlmtSelfpay.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail15); paymentRecDetails.add(paymentRecDetail15);
@@ -1241,12 +1143,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (preselfpayAmt != null) { if (preselfpayAmt != null) {
PaymentRecDetail paymentRecDetail17 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail17 = new PaymentRecDetail();
paymentRecDetail17.setReconciliationId(payment.getId()).setPayEnum(YbPayment.PRESELFPAY_AMT.getValue()) paymentRecDetail17.setReconciliationId(payment.getId()).setPayEnum(YbPayment.PRESELFPAY_AMT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.PRESELFPAY_AMT.getLevel()).setAmount(preselfpayAmt.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.PRESELFPAY_AMT.getLevel()) .setPayLevelEnum(YbPayment.PRESELFPAY_AMT.getLevel())
.setAmount(preselfpayAmt.setScale(6, RoundingMode.HALF_UP)) .setAmount(preselfpayAmt.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail17); paymentRecDetails.add(paymentRecDetail17);
@@ -1255,12 +1153,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (inscpScpAmt != null) { if (inscpScpAmt != null) {
PaymentRecDetail paymentRecDetail18 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail18 = new PaymentRecDetail();
paymentRecDetail18.setReconciliationId(payment.getId()).setPayEnum(YbPayment.INSCP_SCP_AMT.getValue()) paymentRecDetail18.setReconciliationId(payment.getId()).setPayEnum(YbPayment.INSCP_SCP_AMT.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.INSCP_SCP_AMT.getLevel()).setAmount(inscpScpAmt.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.INSCP_SCP_AMT.getLevel()) .setPayLevelEnum(YbPayment.INSCP_SCP_AMT.getLevel())
.setAmount(inscpScpAmt.setScale(6, RoundingMode.HALF_UP)) .setAmount(inscpScpAmt.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail18); paymentRecDetails.add(paymentRecDetail18);
@@ -1269,12 +1163,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (actPayDedc != null) { if (actPayDedc != null) {
PaymentRecDetail paymentRecDetail19 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail19 = new PaymentRecDetail();
paymentRecDetail19.setReconciliationId(payment.getId()).setPayEnum(YbPayment.ACT_PAY_DEDC.getValue()) paymentRecDetail19.setReconciliationId(payment.getId()).setPayEnum(YbPayment.ACT_PAY_DEDC.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.ACT_PAY_DEDC.getLevel()).setAmount(actPayDedc.setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(YbPayment.ACT_PAY_DEDC.getLevel()) .setPayLevelEnum(YbPayment.ACT_PAY_DEDC.getLevel())
.setAmount(actPayDedc.setScale(6, RoundingMode.HALF_UP)) .setAmount(actPayDedc.setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail19); paymentRecDetails.add(paymentRecDetail19);
@@ -1283,33 +1173,23 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (gfRatio != null && gfRatio.compareTo(BigDecimal.ZERO) > 0) { if (gfRatio != null && gfRatio.compareTo(BigDecimal.ZERO) > 0) {
PaymentRecDetail paymentRecDetail20 = new PaymentRecDetail(); PaymentRecDetail paymentRecDetail20 = new PaymentRecDetail();
paymentRecDetail20.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SCHOOL_GF_PAY.getValue()) paymentRecDetail20.setReconciliationId(payment.getId()).setPayEnum(YbPayment.SCHOOL_GF_PAY.getValue())
<<<<<<< HEAD
.setPayLevelEnum(YbPayment.SCHOOL_GF_PAY.getLevel()).setAmount(gfRatio.setScale(6,RoundingMode.HALF_UP))
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId());
=======
.setPayLevelEnum(YbPayment.SCHOOL_GF_PAY.getLevel()) .setPayLevelEnum(YbPayment.SCHOOL_GF_PAY.getLevel())
.setAmount(gfRatio.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno()) .setAmount(gfRatio.setScale(6, RoundingMode.HALF_UP)).setPayTransNo(prePaymentResult.getChrgBchno())
.setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId()); .setResultEnum(PaymentResult.UNPAID.getValue()).setAccountId(prePaymentResult.getAccountId());
>>>>>>> v1.3
paymentRecDetails.add(paymentRecDetail20); paymentRecDetails.add(paymentRecDetail20);
} }
if (prePaymentResult.getSetldetail() != null && !prePaymentResult.getSetldetail().isEmpty()) { if (prePaymentResult.getSetldetail() != null && !prePaymentResult.getSetldetail().isEmpty()) {
PaymentRecDetail paymentRecDetail20; PaymentRecDetail paymentRecDetail20;
for (Clinic2206FundPaymentResult clinic2206FundPaymentResult : prePaymentResult.getSetldetail()) { for (Clinic2206FundPaymentResult clinic2206FundPaymentResult : prePaymentResult.getSetldetail()) {
YbPayment ybPayment = YbPayment ybPayment
YbPayment.getByValue(Integer.parseInt(clinic2206FundPaymentResult.getFundPayType())); = YbPayment.getByValue(Integer.parseInt(clinic2206FundPaymentResult.getFundPayType()));
if (ybPayment == null) { if (ybPayment == null) {
continue; continue;
} }
paymentRecDetail20 = new PaymentRecDetail(); paymentRecDetail20 = new PaymentRecDetail();
paymentRecDetail20.setReconciliationId(payment.getId()).setPayEnum(ybPayment.getValue()) paymentRecDetail20.setReconciliationId(payment.getId()).setPayEnum(ybPayment.getValue())
<<<<<<< HEAD
.setPayLevelEnum(ybPayment.getLevel()).setAmount(clinic2206FundPaymentResult.getFundPayamt().setScale(6,RoundingMode.HALF_UP))
=======
.setPayLevelEnum(ybPayment.getLevel()) .setPayLevelEnum(ybPayment.getLevel())
.setAmount(clinic2206FundPaymentResult.getFundPayamt().setScale(6, RoundingMode.HALF_UP)) .setAmount(clinic2206FundPaymentResult.getFundPayamt().setScale(6, RoundingMode.HALF_UP))
>>>>>>> v1.3
.setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue()) .setPayTransNo(prePaymentResult.getChrgBchno()).setResultEnum(PaymentResult.UNPAID.getValue())
.setAccountId(prePaymentResult.getAccountId()); .setAccountId(prePaymentResult.getAccountId());
paymentRecDetails.add(paymentRecDetail20); paymentRecDetails.add(paymentRecDetail20);
@@ -1528,8 +1408,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (paymentResult.getSetldetail() != null && !paymentResult.getSetldetail().isEmpty()) { if (paymentResult.getSetldetail() != null && !paymentResult.getSetldetail().isEmpty()) {
PaymentRecDetail paymentRecDetail20; PaymentRecDetail paymentRecDetail20;
for (Clinic2206FundPaymentResult clinic2206FundPaymentResult : paymentResult.getSetldetail()) { for (Clinic2206FundPaymentResult clinic2206FundPaymentResult : paymentResult.getSetldetail()) {
YbPayment ybPayment = YbPayment ybPayment
YbPayment.getByValue(Integer.parseInt(clinic2206FundPaymentResult.getFundPayType())); = YbPayment.getByValue(Integer.parseInt(clinic2206FundPaymentResult.getFundPayType()));
if (ybPayment == null) { if (ybPayment == null) {
continue; continue;
} }
@@ -1759,7 +1639,6 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
// if (num > 0) { // if (num > 0) {
// return R.fail(null, "当日已挂号此服务"); // return R.fail(null, "当日已挂号此服务");
// } // }
Patient patient = iPatientService.getById(outpatientRegistrationAddParam.getEncounterFormData().getPatientId()); Patient patient = iPatientService.getById(outpatientRegistrationAddParam.getEncounterFormData().getPatientId());
if (patient == null) { if (patient == null) {
throw new ServiceException("未查询到患者信息"); throw new ServiceException("未查询到患者信息");
@@ -1789,8 +1668,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
Date startOfNextDayDate = Date.from(startOfNextDay.atZone(ZoneId.systemDefault()).toInstant()); Date startOfNextDayDate = Date.from(startOfNextDay.atZone(ZoneId.systemDefault()).toInstant());
// 查询科室信息 // 查询科室信息
Organization organization = Organization organization
iOrganizationService.getById(outpatientRegistrationAddParam.getEncounterFormData().getOrganizationId()); = iOrganizationService.getById(outpatientRegistrationAddParam.getEncounterFormData().getOrganizationId());
if (organization == null) { if (organization == null) {
throw new ServiceException("未查询到科室信息"); throw new ServiceException("未查询到科室信息");
} }
@@ -1809,8 +1688,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// 校验当天是否已经医保挂号,若有则冲销 // 校验当天是否已经医保挂号,若有则冲销
List<ClinicReg> list = List<ClinicReg> list
iRegService.list(new LambdaQueryWrapper<ClinicReg>().eq(ClinicReg::getMdtrtCertNo, patient.getIdCard()) = iRegService.list(new LambdaQueryWrapper<ClinicReg>().eq(ClinicReg::getMdtrtCertNo, patient.getIdCard())
.between(ClinicReg::getBegntime, startOfDayDate, startOfNextDayDate)); .between(ClinicReg::getBegntime, startOfDayDate, startOfNextDayDate));
for (ClinicReg clinicReg : list) { for (ClinicReg clinicReg : list) {
if (organization.getYbNo().equals(clinicReg.getDeptCode()) if (organization.getYbNo().equals(clinicReg.getDeptCode())
@@ -1821,17 +1700,11 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// 查询挂号信息的医保码等 // 查询挂号信息的医保码等
HealthcareService healthcareService = HealthcareService healthcareService
healthcareServiceService.getById(outpatientRegistrationAddParam.getChargeItemFormData().getServiceId()); = healthcareServiceService.getById(outpatientRegistrationAddParam.getChargeItemFormData().getServiceId());
if (healthcareService == null) { if (healthcareService == null) {
throw new ServiceException("未查询到号源信息!"); throw new ServiceException("未查询到号源信息!");
} }
<<<<<<< HEAD
if (healthcareService.getYbNo() == null) {
throw new ServiceException("该号源未对码或未查询到医保码信息!");
}
=======
>>>>>>> v1.3
Clinic2206OrderOutput clinic2206OrderResult; Clinic2206OrderOutput clinic2206OrderResult;
String string = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); String string = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH);
@@ -1840,12 +1713,9 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
.equals(outpatientRegistrationAddParam.getAccountFormData().getContractNo()) .equals(outpatientRegistrationAddParam.getAccountFormData().getContractNo())
|| CommonConstants.BusinessName.DEFAULT_STUDENT_CONTRACT_NO || CommonConstants.BusinessName.DEFAULT_STUDENT_CONTRACT_NO
.equals(outpatientRegistrationAddParam.getAccountFormData().getContractNo()))) { .equals(outpatientRegistrationAddParam.getAccountFormData().getContractNo()))) {
<<<<<<< HEAD
=======
if (healthcareService.getYbNo() == null) { if (healthcareService.getYbNo() == null) {
throw new ServiceException("该号源未对码或未查询到医保码信息!"); throw new ServiceException("该号源未对码或未查询到医保码信息!");
} }
>>>>>>> v1.3
OutpatientRegistrationModel model = new OutpatientRegistrationModel(); OutpatientRegistrationModel model = new OutpatientRegistrationModel();
model.setMdtrtCertType(outpatientRegistrationAddParam.getYbMdtrtCertType()); model.setMdtrtCertType(outpatientRegistrationAddParam.getYbMdtrtCertType());
model.setBusiCardInfo(outpatientRegistrationAddParam.getBusiCardInfo()); model.setBusiCardInfo(outpatientRegistrationAddParam.getBusiCardInfo());
@@ -1881,8 +1751,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
public R<?> regPay(OutpatientRegistrationSettleParam outpatientRegistrationSettleParam, String chrgBchno, public R<?> regPay(OutpatientRegistrationSettleParam outpatientRegistrationSettleParam, String chrgBchno,
List<PaymentDetailDto> paymentDetails) { List<PaymentDetailDto> paymentDetails) {
OutpatientRegistrationAddParam outpatientRegistrationAddParam = OutpatientRegistrationAddParam outpatientRegistrationAddParam
outpatientRegistrationSettleParam.getOutpatientRegistrationAddParam(); = outpatientRegistrationSettleParam.getOutpatientRegistrationAddParam();
ChargeItem chargeItem = new ChargeItem(); ChargeItem chargeItem = new ChargeItem();
BeanUtils.copyProperties(outpatientRegistrationAddParam.getChargeItemFormData(), chargeItem); BeanUtils.copyProperties(outpatientRegistrationAddParam.getChargeItemFormData(), chargeItem);
chargeItem.setContextEnum(ChargeItemContext.REGISTER.getValue());// 挂号 chargeItem.setContextEnum(ChargeItemContext.REGISTER.getValue());// 挂号
@@ -1898,8 +1768,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
// EncounterLocationFormData encounterLocationFormData = // EncounterLocationFormData encounterLocationFormData =
// outpatientRegistrationAddParam.getEncounterLocationFormData(); // outpatientRegistrationAddParam.getEncounterLocationFormData();
// 就诊参数者管理-表单数据 // 就诊参数者管理-表单数据
EncounterParticipantFormData encounterParticipantFormData = EncounterParticipantFormData encounterParticipantFormData
outpatientRegistrationAddParam.getEncounterParticipantFormData(); = outpatientRegistrationAddParam.getEncounterParticipantFormData();
// 就诊账户管理-表单数据 // 就诊账户管理-表单数据
AccountFormData accountFormData = outpatientRegistrationAddParam.getAccountFormData(); AccountFormData accountFormData = outpatientRegistrationAddParam.getAccountFormData();
// 费用项管理-表单数据 // 费用项管理-表单数据
@@ -1916,8 +1786,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
return R.fail(null, "当日已挂号此服务"); return R.fail(null, "当日已挂号此服务");
} }
Contract contract = Contract contract
contractService.getContract(outpatientRegistrationAddParam.getAccountFormData().getContractNo()); = contractService.getContract(outpatientRegistrationAddParam.getAccountFormData().getContractNo());
if (contract == null) { if (contract == null) {
throw new ServiceException("请选择合适的费用性质"); throw new ServiceException("请选择合适的费用性质");
} }
@@ -2054,8 +1924,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
// 保存付款详情 // 保存付款详情
this.savePaymentDetail(paymentResult, payment, paymentDetails, accountId); this.savePaymentDetail(paymentResult, payment, paymentDetails, accountId);
// 更改chargeItem的状态 // 更改chargeItem的状态
List<Long> chargeItemIds = List<Long> chargeItemIds
Arrays.stream(payment.getChargeItemIds().split(",")).map(Long::parseLong).collect(Collectors.toList()); = Arrays.stream(payment.getChargeItemIds().split(",")).map(Long::parseLong).collect(Collectors.toList());
chargeItemService.updatePaymentStatus(chargeItemIds, ChargeItemStatus.BILLED.getValue()); chargeItemService.updatePaymentStatus(chargeItemIds, ChargeItemStatus.BILLED.getValue());
// 保存付款快照信息 2025/08/08 // 保存付款快照信息 2025/08/08
@@ -2174,8 +2044,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
piModel.setBusNo(chargeItem.getBusNo()); piModel.setBusNo(chargeItem.getBusNo());
EncounterDiagnosis encounterDiagnosis; EncounterDiagnosis encounterDiagnosis;
Optional<EncounterDiagnosis> optional = Optional<EncounterDiagnosis> optional
diagList.stream().filter(e -> e.getId().equals(chargeItem.getEncounterDiagnosisId())).findFirst(); = diagList.stream().filter(e -> e.getId().equals(chargeItem.getEncounterDiagnosisId())).findFirst();
if (optional.isPresent()) { if (optional.isPresent()) {
encounterDiagnosis = optional.get(); encounterDiagnosis = optional.get();
@@ -2216,17 +2086,17 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (paymentRecDetails.isEmpty() || byId == null) { if (paymentRecDetails.isEmpty() || byId == null) {
throw new ServiceException("未查询到收费详情"); throw new ServiceException("未查询到收费详情");
} }
List<String> payTransNoList = List<String> payTransNoList
paymentRecDetails.stream().map(PaymentRecDetail::getPayTransNo).distinct().collect(Collectors.toList()); = paymentRecDetails.stream().map(PaymentRecDetail::getPayTransNo).distinct().collect(Collectors.toList());
List<Long> accountIdList = List<Long> accountIdList
paymentRecDetails.stream().map(PaymentRecDetail::getAccountId).distinct().collect(Collectors.toList()); = paymentRecDetails.stream().map(PaymentRecDetail::getAccountId).distinct().collect(Collectors.toList());
if (accountIdList.isEmpty()) { if (accountIdList.isEmpty()) {
throw new ServiceException("未查到账户信息"); throw new ServiceException("未查到账户信息");
} }
List<Account> accountList = List<Account> accountList
iAccountService.list(new LambdaQueryWrapper<Account>().in(Account::getId, accountIdList)); = iAccountService.list(new LambdaQueryWrapper<Account>().in(Account::getId, accountIdList));
if (accountList.isEmpty()) { if (accountList.isEmpty()) {
throw new ServiceException("未查到账户信息"); throw new ServiceException("未查到账户信息");
} }
@@ -2245,11 +2115,11 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
*/ */
public InpatientPreSettleResultDto inpatientPreSettle(PrePaymentDto prePaymentDto) { public InpatientPreSettleResultDto inpatientPreSettle(PrePaymentDto prePaymentDto) {
List<ChargeItemBaseInfoDto> chargeItemBaseInfoByIds = List<ChargeItemBaseInfoDto> chargeItemBaseInfoByIds
iChargeItemService.getChargeItemBaseInfoByIds(prePaymentDto.getChargeItemIds()); = iChargeItemService.getChargeItemBaseInfoByIds(prePaymentDto.getChargeItemIds());
Map<String, List<ChargeItemBaseInfoDto>> chargeItemKVByContractNo = Map<String, List<ChargeItemBaseInfoDto>> chargeItemKVByContractNo
chargeItemBaseInfoByIds.stream().collect(Collectors.groupingBy(ChargeItemBaseInfoDto::getContractNo)); = chargeItemBaseInfoByIds.stream().collect(Collectors.groupingBy(ChargeItemBaseInfoDto::getContractNo));
List<InpatientPreSettleDto> yb2303OutputSetInfos = new ArrayList<>(); List<InpatientPreSettleDto> yb2303OutputSetInfos = new ArrayList<>();
Yb2303OutputSetInfo yb2303OutputSetInfo; Yb2303OutputSetInfo yb2303OutputSetInfo;
@@ -2265,8 +2135,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} else { } else {
inpatientPreSettleDto = inpatientPreSettleDto
preSettleInpatientBySelf(prePaymentDto.getEncounterId(), stringListEntry.getValue()); = preSettleInpatientBySelf(prePaymentDto.getEncounterId(), stringListEntry.getValue());
yb2303OutputSetInfos.add(inpatientPreSettleDto); yb2303OutputSetInfos.add(inpatientPreSettleDto);
} }
@@ -2279,8 +2149,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
PaymentReconciliation paymentReconciliation = getPaymentReconciliation(chargeItemBaseInfoByIds); PaymentReconciliation paymentReconciliation = getPaymentReconciliation(chargeItemBaseInfoByIds);
iPaymentReconciliationService.save(paymentReconciliation); iPaymentReconciliationService.save(paymentReconciliation);
List<PaymentRecDetail> paymentDetailList = List<PaymentRecDetail> paymentDetailList
getPaymentRecDetailList(paymentReconciliation.getId(), yb2303OutputSetInfos); = getPaymentRecDetailList(paymentReconciliation.getId(), yb2303OutputSetInfos);
iPaymentRecDetailService.saveBatch(paymentDetailList); iPaymentRecDetailService.saveBatch(paymentDetailList);
// 查询原预交金 payment // 查询原预交金 payment
@@ -2354,8 +2224,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// 查找对应的收费详情,根据批次号查询 // 查找对应的收费详情,根据批次号查询
List<PaymentRecDetail> paymentRecDetails = List<PaymentRecDetail> paymentRecDetails
paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>() = paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>()
.eq(PaymentRecDetail::getReconciliationId, paymentReconciliation.getId())); .eq(PaymentRecDetail::getReconciliationId, paymentReconciliation.getId()));
if (paymentRecDetails.isEmpty()) { if (paymentRecDetails.isEmpty()) {
@@ -2374,10 +2244,10 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
} }
// <2> 查询基础数据 // <2> 查询基础数据
List<ChargeItemBaseInfoDto> chargeItemBaseInfoByIds = List<ChargeItemBaseInfoDto> chargeItemBaseInfoByIds
iChargeItemService.getChargeItemBaseInfoByIds(paymentDto.getChargeItemIds()); = iChargeItemService.getChargeItemBaseInfoByIds(paymentDto.getChargeItemIds());
Map<String, List<ChargeItemBaseInfoDto>> chargeItemKVByContractNo = Map<String, List<ChargeItemBaseInfoDto>> chargeItemKVByContractNo
chargeItemBaseInfoByIds.stream().collect(Collectors.groupingBy(ChargeItemBaseInfoDto::getContractNo)); = chargeItemBaseInfoByIds.stream().collect(Collectors.groupingBy(ChargeItemBaseInfoDto::getContractNo));
List<Account> accountList = iAccountService.getAccountListByEncounter(paymentDto.getEncounterId()); List<Account> accountList = iAccountService.getAccountListByEncounter(paymentDto.getEncounterId());
if (accountList.isEmpty()) { if (accountList.isEmpty()) {
@@ -2392,8 +2262,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
Integer mcsTracCnt = 0; Integer mcsTracCnt = 0;
// <3>收费详情按照收费批次进行分组后结算 // <3>收费详情按照收费批次进行分组后结算
Map<Long, List<PaymentRecDetail>> payTransNoMap = Map<Long, List<PaymentRecDetail>> payTransNoMap
paymentRecDetails.stream().collect(Collectors.groupingBy(PaymentRecDetail::getAccountId)); = paymentRecDetails.stream().collect(Collectors.groupingBy(PaymentRecDetail::getAccountId));
for (Map.Entry<Long, List<PaymentRecDetail>> stringListEntry : payTransNoMap.entrySet()) { for (Map.Entry<Long, List<PaymentRecDetail>> stringListEntry : payTransNoMap.entrySet()) {
// paymentResult = new PaymentResult(); // paymentResult = new PaymentResult();
@@ -2525,8 +2395,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
throw new ServiceException("请选择正确退费渠道,该付款不是住院收费"); throw new ServiceException("请选择正确退费渠道,该付款不是住院收费");
} }
// 查找对应的收费详情,根据批次号查询 // 查找对应的收费详情,根据批次号查询
List<PaymentRecDetail> paymentRecDetails = List<PaymentRecDetail> paymentRecDetails
paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>() = paymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>()
.eq(PaymentRecDetail::getReconciliationId, paymentReconciliation.getId())); .eq(PaymentRecDetail::getReconciliationId, paymentReconciliation.getId()));
if (paymentRecDetails.isEmpty()) { if (paymentRecDetails.isEmpty()) {
return R.fail("未查询到业务付款记录收费详情"); return R.fail("未查询到业务付款记录收费详情");
@@ -2559,8 +2429,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
// 获取医保反结算后的2305输出参数 // 获取医保反结算后的2305输出参数
stringBuilder.append(yb2305OutputSetlInfo.getSetlId()).append(","); stringBuilder.append(yb2305OutputSetlInfo.getSetlId()).append(",");
// 对payment详情的结算id进行处理 // 对payment详情的结算id进行处理
List<PaymentRecDetail> paymentRecDetailList = List<PaymentRecDetail> paymentRecDetailList
iPaymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>() = iPaymentRecDetailService.list(new LambdaQueryWrapper<PaymentRecDetail>()
.eq(PaymentRecDetail::getReconciliationId, unPaymentReconciliation.getId()) .eq(PaymentRecDetail::getReconciliationId, unPaymentReconciliation.getId())
.eq(PaymentRecDetail::getPayTransText, inpatientSettle.getSetlId())); .eq(PaymentRecDetail::getPayTransText, inpatientSettle.getSetlId()));
if (!paymentRecDetailList.isEmpty()) { if (!paymentRecDetailList.isEmpty()) {
@@ -2768,8 +2638,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
if (inpatientPreSettleDto.getSetldetail() != null && !inpatientPreSettleDto.getSetldetail().isEmpty()) { if (inpatientPreSettleDto.getSetldetail() != null && !inpatientPreSettleDto.getSetldetail().isEmpty()) {
PaymentRecDetail paymentRecDetail20; PaymentRecDetail paymentRecDetail20;
for (Clinic2206FundPaymentResult clinic2206FundPaymentResult : inpatientPreSettleDto.getSetldetail()) { for (Clinic2206FundPaymentResult clinic2206FundPaymentResult : inpatientPreSettleDto.getSetldetail()) {
YbPayment ybPayment = YbPayment ybPayment
YbPayment.getByValue(Integer.parseInt(clinic2206FundPaymentResult.getFundPayType())); = YbPayment.getByValue(Integer.parseInt(clinic2206FundPaymentResult.getFundPayType()));
if (ybPayment == null) { if (ybPayment == null) {
continue; continue;
} }
@@ -2925,8 +2795,6 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
return r.getMsg(); return r.getMsg();
} }
<<<<<<< HEAD
=======
@Override @Override
public List<PaymentDetailDto> cancelPreReg(Long encounterId) { public List<PaymentDetailDto> cancelPreReg(Long encounterId) {
@@ -2944,8 +2812,8 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
.map(Long::valueOf) // 转换为Long .map(Long::valueOf) // 转换为Long
.collect(Collectors.toList()); .collect(Collectors.toList());
List<ChargeItemBaseInfoDto> chargeItemBaseInfoByIds = List<ChargeItemBaseInfoDto> chargeItemBaseInfoByIds
chargeItemService.getChargeItemBaseInfoByIds(chargeItemIdList); = chargeItemService.getChargeItemBaseInfoByIds(chargeItemIdList);
// 查找第一个匹配的对象 // 查找第一个匹配的对象
Optional<ChargeItemBaseInfoDto> targetObject = chargeItemBaseInfoByIds.stream() Optional<ChargeItemBaseInfoDto> targetObject = chargeItemBaseInfoByIds.stream()
@@ -2975,5 +2843,4 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
return detail; return detail;
} }
>>>>>>> v1.3
} }

View File

@@ -2,22 +2,14 @@ package com.openhis.web.paymentmanage.appservice.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
<<<<<<< HEAD
=======
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.constant.Constants; import com.core.common.constant.Constants;
>>>>>>> v1.3
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.core.common.enums.TenantOptionDict; import com.core.common.enums.TenantOptionDict;
import com.core.common.exception.ServiceException; import com.core.common.exception.ServiceException;
import com.core.common.utils.SecurityUtils; import com.core.common.utils.SecurityUtils;
<<<<<<< HEAD
import com.core.web.util.TenantOptionUtil;
import com.openhis.administration.domain.Practitioner;
import com.openhis.administration.service.IPractitionerService;
=======
import com.core.common.utils.StringUtils; import com.core.common.utils.StringUtils;
import com.core.web.util.TenantOptionUtil; import com.core.web.util.TenantOptionUtil;
import com.openhis.administration.domain.Practitioner; import com.openhis.administration.domain.Practitioner;
@@ -25,19 +17,15 @@ import com.openhis.administration.service.IPractitionerService;
import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.CommonConstants;
import com.openhis.common.enums.PaymentStatus; import com.openhis.common.enums.PaymentStatus;
import com.openhis.common.utils.HisQueryUtils; import com.openhis.common.utils.HisQueryUtils;
>>>>>>> v1.3
import com.openhis.financial.domain.PaymentReconciliation; import com.openhis.financial.domain.PaymentReconciliation;
import com.openhis.financial.domain.ThreePartPayCallBack; import com.openhis.financial.domain.ThreePartPayCallBack;
import com.openhis.financial.service.IPaymentRecDetailService; import com.openhis.financial.service.IPaymentRecDetailService;
import com.openhis.financial.service.IPaymentReconciliationService; import com.openhis.financial.service.IPaymentReconciliationService;
import com.openhis.financial.service.ThreePartPayCallBackService; import com.openhis.financial.service.ThreePartPayCallBackService;
import com.openhis.web.paymentmanage.appservice.ThreePartPayService; import com.openhis.web.paymentmanage.appservice.ThreePartPayService;
<<<<<<< HEAD
=======
import com.openhis.web.paymentmanage.dto.PaymentVO; import com.openhis.web.paymentmanage.dto.PaymentVO;
import com.openhis.web.paymentmanage.dto.ThreePartCallBackVo; import com.openhis.web.paymentmanage.dto.ThreePartCallBackVo;
import com.openhis.web.paymentmanage.mapper.PaymentMapper; import com.openhis.web.paymentmanage.mapper.PaymentMapper;
>>>>>>> v1.3
import com.openhis.yb.dto.BaseInfo; import com.openhis.yb.dto.BaseInfo;
import com.openhis.yb.dto.BaseParam; import com.openhis.yb.dto.BaseParam;
import com.openhis.yb.dto.PaymentDetailDto; import com.openhis.yb.dto.PaymentDetailDto;
@@ -52,15 +40,6 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
<<<<<<< HEAD
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
=======
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -75,43 +54,27 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
>>>>>>> v1.3
@Component @Component
@Slf4j @Slf4j
public class ThreePartPayServiceImpl implements ThreePartPayService { public class ThreePartPayServiceImpl implements ThreePartPayService {
<<<<<<< HEAD
=======
Logger logger = LoggerFactory.getLogger(ThreePartPayServiceImpl.class); Logger logger = LoggerFactory.getLogger(ThreePartPayServiceImpl.class);
>>>>>>> v1.3
@Autowired @Autowired
private IPractitionerService practitionerService; private IPractitionerService practitionerService;
@Autowired @Autowired
private IPaymentRecDetailService paymentRecDetailService; private IPaymentRecDetailService paymentRecDetailService;
@Autowired @Autowired
<<<<<<< HEAD
=======
private PaymentMapper paymentMapper; private PaymentMapper paymentMapper;
@Autowired @Autowired
>>>>>>> v1.3
private IPaymentReconciliationService paymentReconciliationService; private IPaymentReconciliationService paymentReconciliationService;
@Autowired @Autowired
private ThreePartPayCallBackService threePartPayCallBackService; private ThreePartPayCallBackService threePartPayCallBackService;
@Autowired @Autowired
private ThreePartSimpleFieldMappingService threePartSimpleFieldMappingService; private ThreePartSimpleFieldMappingService threePartSimpleFieldMappingService;
@Override @Override
<<<<<<< HEAD
public R<?> payFor(ThreePartPayDto threePartPayDto) {
String threePartUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.THREE_PART_PAY_URL);
//String threePartUrl = "http://127.0.0.1:19994/?MSG=EXEC&yylx=02&posjh=&posygh=&jylx=00&je={je}&yjyrq=&yjyckh=&ypzh=&lrcjy=&cm={cm}&ysddh=&erpddh=&body=";
String threePartParam = TenantOptionUtil.getOptionContent(TenantOptionDict.THREE_PART_PARAM);
JSONObject jsonObject = JSON.parseObject(threePartParam);
=======
public R<?> sign() { public R<?> sign() {
// A.获取配置信息 // A.获取配置信息
String threePartUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.THREE_PART_SIGN_URL); String threePartUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.THREE_PART_SIGN_URL);
@@ -180,7 +143,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
JSONObject jsonObject = JSON.parseObject(activeParam); JSONObject jsonObject = JSON.parseObject(activeParam);
//B.基础信息查询 //B.基础信息查询
>>>>>>> v1.3
//订单号及订单信息 //订单号及订单信息
Long paymentId = threePartPayDto.getId(); Long paymentId = threePartPayDto.getId();
PaymentReconciliation paymentReconciliation = paymentReconciliationService.getById(paymentId); PaymentReconciliation paymentReconciliation = paymentReconciliationService.getById(paymentId);
@@ -188,21 +150,12 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
//金额处理 //金额处理
BigDecimal amount = BigDecimal.ZERO; BigDecimal amount = BigDecimal.ZERO;
for (PaymentDetailDto paymentDetail : threePartPayDto.getPaymentDetails()) { for (PaymentDetailDto paymentDetail : threePartPayDto.getPaymentDetails()) {
<<<<<<< HEAD
if(threePartPayDto.getIndex().equals(paymentDetail.getPayEnum())){
amount = paymentDetail.getAmount();
}
}
amount = amount.multiply(new BigDecimal("100"));
String amountResult = String.format("%010d", Integer.parseInt(amount.toString()));
=======
//if(threePartPayDto.getIndex().equals(paymentDetail.getPayEnum())){ //if(threePartPayDto.getIndex().equals(paymentDetail.getPayEnum())){
amount = amount.add(paymentDetail.getAmount()); amount = amount.add(paymentDetail.getAmount());
//} //}
} }
amount = amount.multiply(new BigDecimal("100")); amount = amount.multiply(new BigDecimal("100"));
String amountResult = String.format("%010d", amount.intValue()); String amountResult = String.format("%010d", amount.intValue());
>>>>>>> v1.3
//款员信息查询 //款员信息查询
Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId()); Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId());
@@ -210,25 +163,7 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
//获取支付码 //获取支付码
String txtCode = threePartPayDto.getTxtCode(); String txtCode = threePartPayDto.getTxtCode();
<<<<<<< HEAD
//获取参数
Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, null, paymentReconciliation, amountResult, txtCode);
//获取完整url
String url = renderTemplateSafe(threePartUrl, paramMap);
String result = httpGet(url);
String threePartMapping = threePartSimpleFieldMappingService.reverseMap("threePartMapping", result);
threePartPayCallBackService.save(JSON.parseObject(threePartMapping,ThreePartPayCallBack.class));
return R.ok();
}
=======
//C.根据不同的请求方式处理参数 //C.根据不同的请求方式处理参数
//获取动态参数 //获取动态参数
Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, null, paymentReconciliation, amountResult, txtCode); Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, null, paymentReconciliation, amountResult, txtCode);
//执行请求 //执行请求
@@ -324,7 +259,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
//款员信息查询 //款员信息查询
Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId()); Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId());
//C.根据不同的请求方式处理参数 //C.根据不同的请求方式处理参数
//获取动态参数 //获取动态参数
Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, threePartPayCallBack, paymentReconciliation, null, null); Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, threePartPayCallBack, paymentReconciliation, null, null);
@@ -368,7 +302,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
//款员信息查询 //款员信息查询
Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId()); Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId());
//C.根据不同的请求方式处理参数 //C.根据不同的请求方式处理参数
//获取动态参数 //获取动态参数
Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, threePartPayCallBack, paymentReconciliation, null, null); Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, threePartPayCallBack, paymentReconciliation, null, null);
@@ -408,13 +341,11 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
//B.基础信息查询 //B.基础信息查询
//PaymentReconciliation paymentReconciliation = paymentReconciliationService.getById(paymentId); //PaymentReconciliation paymentReconciliation = paymentReconciliationService.getById(paymentId);
ThreePartPayCallBack threePartPayCallBack = threePartPayCallBackService.getById(id); ThreePartPayCallBack threePartPayCallBack = threePartPayCallBackService.getById(id);
//款员信息查询 //款员信息查询
Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId()); Practitioner practitioner = practitionerService.getPractitionerByUserId(SecurityUtils.getLoginUser().getUserId());
//C.根据不同的请求方式处理参数 //C.根据不同的请求方式处理参数
//获取动态参数 //获取动态参数
Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, threePartPayCallBack, null, null, null); Map<String, String> paramMap = this.getParamMap(jsonObject, practitioner, threePartPayCallBack, null, null, null);
@@ -446,8 +377,8 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PaymentNo)), new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PaymentNo)),
request); request);
IPage<ThreePartCallBackVo> ThreePartCallBackVoIPage = IPage<ThreePartCallBackVo> ThreePartCallBackVoIPage
paymentMapper.getThreePartCallBackVoPage(new Page<>(pageNo, pageSize), queryWrapper); = paymentMapper.getThreePartCallBackVoPage(new Page<>(pageNo, pageSize), queryWrapper);
ThreePartCallBackVoIPage.getRecords().forEach(e -> { ThreePartCallBackVoIPage.getRecords().forEach(e -> {
e.setIdStr(e.getId().toString()); e.setIdStr(e.getId().toString());
@@ -456,10 +387,10 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
return R.ok(ThreePartCallBackVoIPage); return R.ok(ThreePartCallBackVoIPage);
} }
>>>>>>> v1.3
/** /**
* 拼接参数 * 拼接参数
*
* @param jsonObject 配置信息 * @param jsonObject 配置信息
* @param practitioner 款员信息 * @param practitioner 款员信息
* @param threePartPayCallBack 原订单 * @param threePartPayCallBack 原订单
@@ -516,8 +447,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
if (payWayOrderIdKey != null) { if (payWayOrderIdKey != null) {
paramMap.put(merTradeNoKey, threePartPayCallBack.getMerTradeNo());//商户系统订单号 paramMap.put(merTradeNoKey, threePartPayCallBack.getMerTradeNo());//商户系统订单号
} }
<<<<<<< HEAD
=======
String tradeNoKey = jsonObject.getString("tradeNo"); String tradeNoKey = jsonObject.getString("tradeNo");
if (tradeNoKey != null) { if (tradeNoKey != null) {
paramMap.put(tradeNoKey, threePartPayCallBack.getTradeNo());//商户系统订单号 paramMap.put(tradeNoKey, threePartPayCallBack.getTradeNo());//商户系统订单号
@@ -526,7 +455,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
if (txnAmtKey != null) { if (txnAmtKey != null) {
paramMap.put(txnAmtKey, threePartPayCallBack.getTxnAmt());//金额 paramMap.put(txnAmtKey, threePartPayCallBack.getTxnAmt());//金额
} }
>>>>>>> v1.3
} }
if (paymentReconciliation != null) { if (paymentReconciliation != null) {
@@ -547,12 +475,17 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
} }
return paramMap; return paramMap;
} }
/** /**
* 安全替换,避免空指针 * 安全替换,避免空指针
*/ */
private String renderTemplateSafe(String template, Map<String, String> params) { private String renderTemplateSafe(String template, Map<String, String> params) {
if (template == null) return ""; if (template == null) {
if (params == null) params = new HashMap<>(); return "";
}
if (params == null) {
params = new HashMap<>();
}
String result = template; String result = template;
for (Map.Entry<String, String> entry : params.entrySet()) { for (Map.Entry<String, String> entry : params.entrySet()) {
@@ -566,9 +499,8 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
} }
/** /**
<<<<<<< HEAD
=======
* 执行请求 * 执行请求
*
* @param method 请求类型 * @param method 请求类型
* @param threePartUrl 路径参数 * @param threePartUrl 路径参数
* @param staticParam 静态参数 * @param staticParam 静态参数
@@ -614,7 +546,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
} }
/** /**
>>>>>>> v1.3
* 发送http请求2025/05/02经测试若以自带的工具类发送请求失败故使用原peis系统中成功调用的写法重新封装 * 发送http请求2025/05/02经测试若以自带的工具类发送请求失败故使用原peis系统中成功调用的写法重新封装
* *
* @param url 路径 * @param url 路径
@@ -632,10 +563,7 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
HttpGet httpGet = new HttpGet(url); HttpGet httpGet = new HttpGet(url);
// 执行http请求 // 执行http请求
response = httpClient.execute(httpGet); response = httpClient.execute(httpGet);
<<<<<<< HEAD
=======
System.out.println("回复信息:" + JSON.toJSONString(response)); System.out.println("回复信息:" + JSON.toJSONString(response));
>>>>>>> v1.3
resultString = EntityUtils.toString(response.getEntity(), "utf-8"); resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@@ -649,8 +577,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
} }
return resultString; return resultString;
} }
<<<<<<< HEAD
=======
/** /**
* 发送http请求2025/05/02经测试若以自带的工具类发送请求失败故使用原peis系统中成功调用的写法重新封装 * 发送http请求2025/05/02经测试若以自带的工具类发送请求失败故使用原peis系统中成功调用的写法重新封装
@@ -691,9 +617,6 @@ public class ThreePartPayServiceImpl implements ThreePartPayService {
@Override @Override
public R<?> payForNenu(ThreePartPayDto threePartPayDto) { public R<?> payForNenu(ThreePartPayDto threePartPayDto) {
return null; return null;
} }
>>>>>>> v1.3
} }

View File

@@ -1,6 +1,5 @@
package com.openhis.web.paymentmanage.appservice.impl; package com.openhis.web.paymentmanage.appservice.impl;
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.openhis.web.paymentmanage.util.ReverseMappingProperties; import com.openhis.web.paymentmanage.util.ReverseMappingProperties;
@@ -16,17 +15,11 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
<<<<<<< HEAD
@ConfigurationProperties(prefix = "threepart.mapping")
=======
>>>>>>> v1.3
@Data @Data
@Slf4j @Slf4j
public class ThreePartSimpleFieldMappingService { public class ThreePartSimpleFieldMappingService {
@Autowired @Autowired
private ReverseMappingProperties properties; private ReverseMappingProperties properties;
@@ -38,11 +31,7 @@ public class ThreePartSimpleFieldMappingService {
public String reverseMap(String businessType, String sourceJson) { public String reverseMap(String businessType, String sourceJson) {
try { try {
// 1. 获取映射配置 // 1. 获取映射配置
<<<<<<< HEAD
Map<String, String> mappingConfig = properties.getMappingConfig(businessType);
=======
Map<String, String> mappingConfig = properties.getReverseMappings().get(businessType); Map<String, String> mappingConfig = properties.getReverseMappings().get(businessType);
>>>>>>> v1.3
if (mappingConfig.isEmpty()) { if (mappingConfig.isEmpty()) {
log.warn("未找到业务类型[{}]的映射配置", businessType); log.warn("未找到业务类型[{}]的映射配置", businessType);
return sourceJson; // 返回原JSON return sourceJson; // 返回原JSON
@@ -50,14 +39,12 @@ public class ThreePartSimpleFieldMappingService {
// 2. 解析源JSON // 2. 解析源JSON
Map<String, Object> sourceMap; Map<String, Object> sourceMap;
<<<<<<< HEAD
=======
// 修复BOM问题 // 修复BOM问题
if (sourceJson.startsWith("\uFEFF")) { if (sourceJson.startsWith("\uFEFF")) {
sourceJson = sourceJson.substring(1); sourceJson = sourceJson.substring(1);
} }
>>>>>>> v1.3 sourceMap = objectMapper.readValue(sourceJson, new TypeReference<Map<String, Object>>() {
sourceMap = objectMapper.readValue(sourceJson, new TypeReference<Map<String,Object>>(){}); });
// 3. 执行反向映射 // 3. 执行反向映射
Map<String, Object> resultMap = reverseMap(mappingConfig, sourceMap); Map<String, Object> resultMap = reverseMap(mappingConfig, sourceMap);

View File

@@ -120,8 +120,8 @@ public class PaymentReconciliationController {
if ("0".equals(TenantOptionUtil.getOptionContent(TenantOptionDict.INVOICE_SWITCH))) { if ("0".equals(TenantOptionUtil.getOptionContent(TenantOptionDict.INVOICE_SWITCH))) {
return result; return result;
} else { } else {
R<?> eleResult = R<?> eleResult
eleInvoiceService.invoiceWriteoff(paymentRecon.getRelationId(), cancelPaymentDto.getReason()); = eleInvoiceService.invoiceWriteoff(paymentRecon.getRelationId(), cancelPaymentDto.getReason());
if (eleResult.getCode() != 200) { if (eleResult.getCode() != 200) {
// 因取消付款成功前端需要关闭弹窗此处信息仅用于提示所以返回ok // 因取消付款成功前端需要关闭弹窗此处信息仅用于提示所以返回ok
return R.ok(null, " 取消付款成功,电子发票开具失败 :" + eleResult.getMsg()); return R.ok(null, " 取消付款成功,电子发票开具失败 :" + eleResult.getMsg());
@@ -257,8 +257,8 @@ public class PaymentReconciliationController {
if (PaymentReconciliation.class.isAssignableFrom(r.getData().getClass())) { if (PaymentReconciliation.class.isAssignableFrom(r.getData().getClass())) {
paymentRecon = (PaymentReconciliation) r.getData(); paymentRecon = (PaymentReconciliation) r.getData();
} }
R<?> eleResult = R<?> eleResult
eleInvoiceService.invoiceWriteoff(paymentRecon.getRelationId(), cancelPaymentInpatientDto.getReason()); = eleInvoiceService.invoiceWriteoff(paymentRecon.getRelationId(), cancelPaymentInpatientDto.getReason());
if (eleResult.getCode() != 200) { if (eleResult.getCode() != 200) {
// 因取消付款成功前端需要关闭弹窗此处信息仅用于提示所以返回ok // 因取消付款成功前端需要关闭弹窗此处信息仅用于提示所以返回ok
return R.ok(null, " 取消付款成功,电子发票开具失败 :" + eleResult.getMsg()); return R.ok(null, " 取消付款成功,电子发票开具失败 :" + eleResult.getMsg());
@@ -277,8 +277,6 @@ public class PaymentReconciliationController {
public R<?> nenuBpcPay(@RequestBody NenuBpcPayDto nenuBpcPayDto) { public R<?> nenuBpcPay(@RequestBody NenuBpcPayDto nenuBpcPayDto) {
return R.ok(paymentReconciliationService.nenuBpcPay(nenuBpcPayDto)); return R.ok(paymentReconciliationService.nenuBpcPay(nenuBpcPayDto));
} }
<<<<<<< HEAD
=======
/** /**
* 退号查询 * 退号查询
@@ -290,5 +288,4 @@ public class PaymentReconciliationController {
public R<?> cancelPreReg(@RequestParam(name = "encounterId") Long encounterId) { public R<?> cancelPreReg(@RequestParam(name = "encounterId") Long encounterId) {
return R.ok(paymentReconciliationService.cancelPreReg(encounterId)); return R.ok(paymentReconciliationService.cancelPreReg(encounterId));
} }
>>>>>>> v1.3
} }

View File

@@ -20,17 +20,9 @@ import com.openhis.yb.dto.ThreePartPayDto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
<<<<<<< HEAD
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
=======
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
>>>>>>> v1.3
import java.math.BigDecimal; import java.math.BigDecimal;
import java.security.Security; import java.security.Security;
import java.util.HashMap; import java.util.HashMap;
@@ -53,10 +45,9 @@ public class ThreePartPayController {
/** /**
* 扫码付款 * 扫码付款
*
* @return * @return
*/ */
<<<<<<< HEAD
=======
@PostMapping("/sign") @PostMapping("/sign")
public R<?> sign() { public R<?> sign() {
return threePartPayService.sign(); return threePartPayService.sign();
@@ -64,6 +55,7 @@ public class ThreePartPayController {
/** /**
* 扫码付款 * 扫码付款
*
* @return * @return
*/ */
@PostMapping("/sign-out") @PostMapping("/sign-out")
@@ -73,18 +65,17 @@ public class ThreePartPayController {
/** /**
* 扫码付款 * 扫码付款
*
* @return * @return
*/ */
>>>>>>> v1.3
@PostMapping("/pay-for") @PostMapping("/pay-for")
public R<?> payFor(@RequestBody ThreePartPayDto threePartPayDto) { public R<?> payFor(@RequestBody ThreePartPayDto threePartPayDto) {
return threePartPayService.payFor(threePartPayDto); return threePartPayService.payFor(threePartPayDto);
} }
<<<<<<< HEAD
=======
/** /**
* 扫码付款(师大) * 扫码付款(师大)
*
* @return * @return
*/ */
@PostMapping("/pay-for-nenu") @PostMapping("/pay-for-nenu")
@@ -92,10 +83,9 @@ public class ThreePartPayController {
return threePartPayService.payForNenu(threePartPayDto); return threePartPayService.payForNenu(threePartPayDto);
} }
/** /**
* 扫码付款结果查询(预结算窗口) * 扫码付款结果查询(预结算窗口)
*
* @return * @return
*/ */
@GetMapping("/pay-query") @GetMapping("/pay-query")
@@ -104,9 +94,9 @@ public class ThreePartPayController {
//return threePartPayService.returnQuery(threePartPayDto.getId()); //return threePartPayService.returnQuery(threePartPayDto.getId());
} }
/** /**
* 当天退费 * 当天退费
*
* @return * @return
*/ */
@GetMapping("/return-bill") @GetMapping("/return-bill")
@@ -116,6 +106,7 @@ public class ThreePartPayController {
/** /**
* 隔天退费 * 隔天退费
*
* @return * @return
*/ */
@GetMapping("/return-goods") @GetMapping("/return-goods")
@@ -125,6 +116,7 @@ public class ThreePartPayController {
/** /**
* 退费结果查询 * 退费结果查询
*
* @return * @return
*/ */
@GetMapping("/return-query") @GetMapping("/return-query")
@@ -134,6 +126,7 @@ public class ThreePartPayController {
/** /**
* 网银支付参数 * 网银支付参数
*
* @return * @return
*/ */
@GetMapping("/page") @GetMapping("/page")
@@ -142,7 +135,5 @@ public class ThreePartPayController {
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return threePartPayService.getPage(searchKey, pageNo, pageSize, request); return threePartPayService.getPage(searchKey, pageNo, pageSize, request);
} }
>>>>>>> v1.3
} }

View File

@@ -8,11 +8,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Configuration @Configuration
<<<<<<< HEAD
@ConfigurationProperties(prefix = "threepaymapping")
=======
@ConfigurationProperties(prefix = "mapping.reverse-mappings") @ConfigurationProperties(prefix = "mapping.reverse-mappings")
>>>>>>> v1.3
@Data @Data
public class ReverseMappingProperties { public class ReverseMappingProperties {

View File

@@ -2,16 +2,7 @@ package com.openhis.web.pharmacymanage.appservice;
import java.util.List; import java.util.List;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.pharmacymanage.dto.*;
=======
import com.core.common.core.domain.R;
>>>>>>> v1.3
/** /**
* 住院汇总发药 应用实现接口 * 住院汇总发药 应用实现接口
@@ -24,98 +15,14 @@ public interface ISummaryDispenseMedicineAppService {
/** /**
* 汇总发药 * 汇总发药
* *
<<<<<<< HEAD
* @return 初始化信息
*/
R<?> init();
/**
* 分页查询住院病人列表
*
* @param admissionPageParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 病人列表
*/
R<?> getEncounterInfoListPage(AdmissionPageParam admissionPageParam, String startTime, String endTime,
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
void makeExcelFile(MedicineSummarySearchParam searchParam, Integer pageNo,
Integer pageSize, String searchKey,
HttpServletRequest request, HttpServletResponse response);
/**
* 住院汇总药品
*
* @param searchParam 查询信息
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return 药品汇总
*/
R<?> getSummaryMedicationInfo(MedicineSummarySearchParam searchParam, Integer pageNo, Integer pageSize);
/**
* 住院汇总发药单
*
* @param searchParam 查询信息
* @param startTime 开始时间
* @param endTime 结束时间
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 药品汇总
*/
R<?> getSummaryFromInfo(FromSummarySearchParam searchParam, String startTime, String endTime, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request);
/**
* 住院药品汇总发药单详细
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
R<?> getOrderInfo(FromSearchParam searchParam, String searchKey, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**
* 处方单核对发药
*
* @param dispenseMedicineList 发药信息
* @return 处理结果
*/
R<?> SummaryDispenseMedicine(List<DispenseItemDto> dispenseMedicineList);
=======
* @param summaryNoList 汇总单列表 * @param summaryNoList 汇总单列表
* @return 处理结果 * @return 处理结果
*/ */
R<?> SummaryDispenseMedicine(List<String> summaryNoList); R<?> SummaryDispenseMedicine(List<String> summaryNoList);
>>>>>>> v1.3
/** /**
* 作废 * 作废
* *
<<<<<<< HEAD
* @param dispenseMedicineList 作废信息
* @return 处理结果
*/
R<?> dispenseCancel(List<DispenseItemDto> dispenseMedicineList);
/**
* 退药处理
*
* @param dispenseMedicineList 退药清单
* @return 处理结果
*/
R<?> medicineReturn(List<DispenseItemDto> dispenseMedicineList);
=======
* @param summaryNoList 汇总单列表 * @param summaryNoList 汇总单列表
* @return 处理结果 * @return 处理结果
*/ */
@@ -144,10 +51,4 @@ public interface ISummaryDispenseMedicineAppService {
// */ // */
// void takeExcelField(FromSearchParam searchParam, String searchKey, Integer pageNo, Integer pageSize, // void takeExcelField(FromSearchParam searchParam, String searchKey, Integer pageNo, Integer pageSize,
// HttpServletRequest request, HttpServletResponse response); // HttpServletRequest request, HttpServletResponse response);
>>>>>>> v1.3
} }

View File

@@ -95,22 +95,22 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
DispenseInitDto initDto = new DispenseInitDto(); DispenseInitDto initDto = new DispenseInitDto();
// 获取科室下拉选列表 // 获取科室下拉选列表
List<Organization> organizationList = List<Organization> organizationList
organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue()); = organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream() List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream()
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName())) .map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 获取配药人下拉选列表 // 获取配药人下拉选列表
List<Practitioner> preparerDoctorList = List<Practitioner> preparerDoctorList
medicalDeviceDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode()); = medicalDeviceDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode());
List<DispenseInitDto.PreparerDoctorOption> preparerDoctorOptions = preparerDoctorList.stream() List<DispenseInitDto.PreparerDoctorOption> preparerDoctorOptions = preparerDoctorList.stream()
.map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName())) .map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 未发药原因下拉选列表 // 未发药原因下拉选列表
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions = List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions
Stream.of(NotPerformedReasonEnum.values()) = Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(), .map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo())) notPerformedReason.getInfo()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -144,14 +144,14 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
Integer statusEnum = encounterInfoSearchParam.getStatusEnum(); Integer statusEnum = encounterInfoSearchParam.getStatusEnum();
encounterInfoSearchParam.setStatusEnum(null); encounterInfoSearchParam.setStatusEnum(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<EncounterInfoSearchParam> queryWrapper = QueryWrapper<EncounterInfoSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey, = HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard, new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)), CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request); request);
// 查询就诊病人列表 // 查询就诊病人列表
Page<EncounterInfoDto> encounterInfoPage = Page<EncounterInfoDto> encounterInfoPage
medicalDeviceDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper, = medicalDeviceDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(), statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue()); DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue());
encounterInfoPage.getRecords().forEach(encounterInfo -> { encounterInfoPage.getRecords().forEach(encounterInfo -> {
@@ -184,11 +184,11 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum(); Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum();
itemDispenseOrderDto.setStatusEnum(null); itemDispenseOrderDto.setStatusEnum(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<ItemDispenseOrderDto> queryWrapper = QueryWrapper<ItemDispenseOrderDto> queryWrapper
HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null); = HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
// 处方单信息查询 // 处方单信息查询
Page<ItemDispenseOrderDto> deviceDispenseOrderPage = Page<ItemDispenseOrderDto> deviceDispenseOrderPage
medicalDeviceDispenseMapper.selectDeviceDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper, = medicalDeviceDispenseMapper.selectDeviceDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(), DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus); DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus);
deviceDispenseOrderPage.getRecords().forEach(deviceDispenseOrder -> { deviceDispenseOrderPage.getRecords().forEach(deviceDispenseOrder -> {
@@ -215,54 +215,12 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
return R.fail("请选择调配药师"); return R.fail("请选择调配药师");
} }
// 获取发药单id列表 // 获取发药单id列表
List<Long> devDispenseIdList = List<Long> devDispenseIdList
dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList()); = dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit().equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
=======
// 获取耗材待发放库存信息 // 获取耗材待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList = List<UnDispenseInventoryDto> unDispenseInventoryList
returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null, = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION); CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) { if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
@@ -271,8 +229,8 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// 库存待更新列表 // 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理 // 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap = Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId() = unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId())); + CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) { if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) { for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
@@ -294,15 +252,14 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
if (!unDispenseInventoryDto.getDispenseUnit() if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) { .equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加 // 转换为小单位进行累加
quantity = quantity
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent()); = unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
} }
minQuantity = minQuantity.add(quantity); minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum()) if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) { && unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity(); inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity();
inventoryId = unDispenseInventoryDto.getInventoryId(); inventoryId = unDispenseInventoryDto.getInventoryId();
>>>>>>> v1.3
} }
} }
if (minQuantity.compareTo(inventoryQuantity) > 0) { if (minQuantity.compareTo(inventoryQuantity) > 0) {
@@ -432,8 +389,8 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
@Override @Override
public R<?> dispenseMedicalConsumables(List<Long> chargeItemIds) { public R<?> dispenseMedicalConsumables(List<Long> chargeItemIds) {
// 查看所属医院 // 查看所属医院
String fixmedinsCode = String fixmedinsCode
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE); = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
if (!HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) { if (!HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
return R.ok(); return R.ok();
} }
@@ -443,58 +400,16 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
} }
// 获取发申请id列表 // 获取发申请id列表
List<Long> devRequestIdList = List<Long> devRequestIdList
chargeItemList.stream().map(ChargeItem::getServiceId).collect(Collectors.toList()); = chargeItemList.stream().map(ChargeItem::getServiceId).collect(Collectors.toList());
// 获取耗材发放id列表 // 获取耗材发放id列表
List<Long> devDispenseIdList = deviceDispenseService List<Long> devDispenseIdList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getDeviceReqId, devRequestIdList)) .list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getDeviceReqId, devRequestIdList))
.stream().map(DeviceDispense::getId).collect(Collectors.toList()); .stream().map(DeviceDispense::getId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个耗材分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit().equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
=======
// 获取耗材待发放库存信息 // 获取耗材待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList = List<UnDispenseInventoryDto> unDispenseInventoryList
returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null, = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION); CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) { if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
@@ -503,8 +418,8 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// 库存待更新列表 // 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理 // 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap = Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId() = unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId())); + CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) { if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) { for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
@@ -526,15 +441,14 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
if (!unDispenseInventoryDto.getDispenseUnit() if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) { .equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加 // 转换为小单位进行累加
quantity = quantity
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent()); = unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
} }
minQuantity = minQuantity.add(quantity); minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum()) if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) { && unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity(); inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity();
inventoryId = unDispenseInventoryDto.getInventoryId(); inventoryId = unDispenseInventoryDto.getInventoryId();
>>>>>>> v1.3
} }
} }
if (minQuantity.compareTo(inventoryQuantity) > 0) { if (minQuantity.compareTo(inventoryQuantity) > 0) {
@@ -627,8 +541,8 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
@Override @Override
public R<?> deviceCancel(List<DispenseItemDto> dispenseDeviceList) { public R<?> deviceCancel(List<DispenseItemDto> dispenseDeviceList) {
// 获取发材料单id列表 // 获取发材料单id列表
List<Long> devDispenseIdList = List<Long> devDispenseIdList
dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList()); = dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 材料发放信息查询 // 材料发放信息查询
List<DeviceDispense> dispenseList = deviceDispenseService List<DeviceDispense> dispenseList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList)); .list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));

View File

@@ -1,10 +1,5 @@
package com.openhis.web.pharmacymanage.appservice.impl; package com.openhis.web.pharmacymanage.appservice.impl;
<<<<<<< HEAD
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
=======
import static com.openhis.common.constant.CommonConstants.ExcelOut.*; import static com.openhis.common.constant.CommonConstants.ExcelOut.*;
import static com.openhis.common.constant.CommonConstants.SheetName.SHEET_NAME_DRUG_DETAIL; import static com.openhis.common.constant.CommonConstants.SheetName.SHEET_NAME_DRUG_DETAIL;
@@ -13,18 +8,12 @@ import java.math.RoundingMode;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
>>>>>>> v1.3
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
import com.core.common.utils.poi.ExcelUtil;
import com.openhis.web.inventorymanage.dto.ReceiptPageDto;
=======
>>>>>>> v1.3
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -32,23 +21,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.core.domain.entity.SysDictData; import com.core.common.core.domain.entity.SysDictData;
<<<<<<< HEAD
=======
import com.core.common.exception.NonCaptureException; import com.core.common.exception.NonCaptureException;
import com.core.common.utils.StringUtils; import com.core.common.utils.StringUtils;
import com.core.common.utils.poi.ExcelUtil; import com.core.common.utils.poi.ExcelUtil;
>>>>>>> v1.3
import com.core.system.service.ISysDictTypeService; import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.domain.Practitioner; import com.openhis.administration.domain.Practitioner;
import com.openhis.administration.service.IPractitionerService; import com.openhis.administration.service.IPractitionerService;
import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.CommonConstants;
<<<<<<< HEAD
import com.openhis.common.enums.DispenseStatus;
import com.openhis.common.enums.EncounterClass;
=======
import com.openhis.common.enums.ConditionCode; import com.openhis.common.enums.ConditionCode;
import com.openhis.common.enums.DispenseStatus; import com.openhis.common.enums.DispenseStatus;
>>>>>>> v1.3
import com.openhis.common.enums.PublicationStatus; import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.enums.RequestStatus; import com.openhis.common.enums.RequestStatus;
import com.openhis.common.utils.HisQueryUtils; import com.openhis.common.utils.HisQueryUtils;
@@ -80,11 +61,6 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
/** /**
* 获取页面初始化信息 * 获取页面初始化信息
*/ */
<<<<<<< HEAD
=======
>>>>>>> v1.3
@Override @Override
public R<?> init() { public R<?> init() {
@@ -134,19 +110,11 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
QueryWrapper<MedDetailsSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(medDetailsSearchParam, QueryWrapper<MedDetailsSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(medDetailsSearchParam,
searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request); searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request);
<<<<<<< HEAD
Page<MedDetailedAccountPageDto> medDetailsPage =
medicationDetailsMapper.selectAmbPractitionerDetailPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.AMB.getValue(), DispenseStatus.COMPLETED.getValue(), RequestStatus.COMPLETED.getValue(),
DispenseStatus.REFUNDED.getValue(), 1, flg, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
=======
Page<MedDetailedAccountPageDto> medDetailsPage = medicationDetailsMapper.selectAmbPractitionerDetailPage( Page<MedDetailedAccountPageDto> medDetailsPage = medicationDetailsMapper.selectAmbPractitionerDetailPage(
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(), new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg, RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION, CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
ConditionCode.LOT_NUMBER_COST.getCode()); ConditionCode.LOT_NUMBER_COST.getCode());
>>>>>>> v1.3
return R.ok(medDetailsPage); return R.ok(medDetailsPage);
@@ -171,22 +139,6 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
// 先获取Page对象再获取其中的记录列表 // 先获取Page对象再获取其中的记录列表
Page<MedDetailedAccountPageDto> pageData = (Page<MedDetailedAccountPageDto>) result.getData(); Page<MedDetailedAccountPageDto> pageData = (Page<MedDetailedAccountPageDto>) result.getData();
List<MedDetailedAccountPageDto> dataList = pageData.getRecords(); List<MedDetailedAccountPageDto> dataList = pageData.getRecords();
<<<<<<< HEAD
// 获取字典数据
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String unitCode = medDetailedAccountPageDto.getUnitCode();
// 添加空值检查
if (unitCode != null && sysDictTypeService != null) {
// 缓存字典数据,避免重复查询
List<SysDictData> unitCodelist = sysDictTypeService.selectDictDataByType("unit_code");
if (unitCodelist != null) {
for (SysDictData dictData : unitCodelist) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(unitCode)) {
medDetailedAccountPageDto.setUnitCode_dictText(dictData.getDictLabel());
break;
=======
// 判断项目类别 // 判断项目类别
try { try {
// 获取字典数据 // 获取字典数据
@@ -195,8 +147,8 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
// 添加空值检查 // 添加空值检查
if (unitCode != null && sysDictTypeService != null) { if (unitCode != null && sysDictTypeService != null) {
// 缓存字典数据,避免重复查询 // 缓存字典数据,避免重复查询
List<SysDictData> unitCodelist = List<SysDictData> unitCodelist
sysDictTypeService.selectDictDataByType(CommonConstants.FieldName.UnitCode); = sysDictTypeService.selectDictDataByType(CommonConstants.FieldName.UnitCode);
if (unitCodelist != null) { if (unitCodelist != null) {
for (SysDictData dictData : unitCodelist) { for (SysDictData dictData : unitCodelist) {
if (dictData != null && dictData.getDictValue() != null if (dictData != null && dictData.getDictValue() != null
@@ -205,110 +157,10 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
medDetailedAccountPageDto.setUnitCode_dictText(dictData.getDictLabel()); medDetailedAccountPageDto.setUnitCode_dictText(dictData.getDictLabel());
break; break;
} }
>>>>>>> v1.3
} }
} }
} }
} }
<<<<<<< HEAD
}
// 将发药数量与单位拼接
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String unitCode_dictText = medDetailedAccountPageDto.getUnitCode_dictText();
Integer dispenseQuantity = medDetailedAccountPageDto.getDispenseQuantity();
// 将发药数量与单位拼接
medDetailedAccountPageDto.setDispenseQuantitystr(dispenseQuantity + unitCode_dictText);
}
// 将退药数量与单位拼接
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String unitCode_dictText = medDetailedAccountPageDto.getUnitCode_dictText();
Integer refundQuantity = medDetailedAccountPageDto.getRefundQuantity();
// 添加完整的空值检查和默认值处理
String unitText = (unitCode_dictText != null) ? unitCode_dictText : "";
if (refundQuantity == null) {
medDetailedAccountPageDto.setRefundQuantitystr("0.00" + unitCode_dictText);
} else if (refundQuantity == 0) {
medDetailedAccountPageDto.setRefundQuantitystr("0.00" + unitCode_dictText);
} else {
medDetailedAccountPageDto.setRefundQuantitystr(refundQuantity.toString() + unitCode_dictText);
}
}
// 将退药金额
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
BigDecimal refundPrice = medDetailedAccountPageDto.getRefundPrice();
if (refundPrice == null) {
medDetailedAccountPageDto.setRefundPricestr("0.00" );
} else if (refundPrice.signum() == 0) {
medDetailedAccountPageDto.setRefundPricestr("0.00" );
} else {
refundPrice = refundPrice.setScale(6, RoundingMode.HALF_UP);
medDetailedAccountPageDto.setRefundPricestr(refundPrice.toString() );
}
}
//发药金额
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
BigDecimal dispensePrice = medDetailedAccountPageDto.getDispensePrice();
if (dispensePrice == null) {
medDetailedAccountPageDto.setDispensePricestr("0.00" );
} else if (dispensePrice.signum() == 0) {
medDetailedAccountPageDto.setDispensePricestr("0.00" );
} else {
dispensePrice = dispensePrice.setScale(6, RoundingMode.HALF_UP);
medDetailedAccountPageDto.setDispensePricestr(dispensePrice.toString() );
}
}
// 添加项目类别
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String itemTable = medDetailedAccountPageDto.getItemTable();
if (itemTable != null) {
if(itemTable.equals("med_medication_definition")){
medDetailedAccountPageDto.setItemTable("药品");
}
if(itemTable.equals("adm_device_definition")){
medDetailedAccountPageDto.setItemTable("耗材");
}
}
else{
medDetailedAccountPageDto.setItemTable("未知类型");
}
}
//判断项目类别
try {
// 准备表头key对应DTO的字段名
//Map<String, String> headers = new LinkedHashMap<>();
// headers.put("practitionerName", "发药人");
// headers.put("dispenseNo", "发药单号");
// headers.put("medicationName", "药品项目");
// headers.put("itemTable", "项目类别");
// headers.put("busNo", "药品编码");
// headers.put("ybNo", "医保编码");
// headers.put("totalVolume", "规格");
// headers.put("dispenseQuantitystr", "发药数量");
// headers.put("dispensePricestr", "发药金额");
// headers.put("refundQuantitystr", "退药数量");
// headers.put("refundPricestr", "退药金额");
// headers.put("lotNumber", "生产批号");
// headers.put("manufacturerText", "厂家/产地");
// headers.put("supplierName", "供应商");
// headers.put("dispenseTime", "发药时间");
// 导出到Excel
// ExcelFillerUtil.makeExcelFile(response, dataList, headers, "发药明细", null);
// 导出到Excel
ExcelUtil<MedDetailedAccountPageDto> util = new ExcelUtil<MedDetailedAccountPageDto>(MedDetailedAccountPageDto.class);
util.exportExcel(response,dataList,"发药明细");
} catch (Exception e) {
e.printStackTrace();
System.out.printf("导出Excel失败" + e.getMessage());
}
=======
// 将发药数量与单位拼接 // 将发药数量与单位拼接
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) { for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
@@ -408,7 +260,6 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
throw new NonCaptureException(StringUtils.format("导出excel失败"), e); throw new NonCaptureException(StringUtils.format("导出excel失败"), e);
} }
>>>>>>> v1.3
} }
} }
@@ -440,19 +291,11 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
QueryWrapper<MedDetailsSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(medDetailsSearchParam, QueryWrapper<MedDetailsSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(medDetailsSearchParam,
searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request); searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request);
<<<<<<< HEAD
Page<MedDetailedAccountPageDto> medDetailsPage =
medicationDetailsMapper.selectAmbPractitionerDetailPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.AMB.getValue(), DispenseStatus.COMPLETED.getValue(), RequestStatus.COMPLETED.getValue(),
DispenseStatus.REFUNDED.getValue(), 2, flg, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
=======
Page<MedDetailedAccountPageDto> medDetailsPage = medicationDetailsMapper.selectAmbPractitionerDetailPage( Page<MedDetailedAccountPageDto> medDetailsPage = medicationDetailsMapper.selectAmbPractitionerDetailPage(
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(), new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg, RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION, CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
ConditionCode.LOT_NUMBER_COST.getCode()); ConditionCode.LOT_NUMBER_COST.getCode());
>>>>>>> v1.3
return R.ok(medDetailsPage); return R.ok(medDetailsPage);

View File

@@ -8,10 +8,7 @@ import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
<<<<<<< HEAD
=======
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
>>>>>>> v1.3
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@@ -135,8 +132,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
ReturnMedicineInitDto initDto = new ReturnMedicineInitDto(); ReturnMedicineInitDto initDto = new ReturnMedicineInitDto();
// 获取科室下拉选列表 // 获取科室下拉选列表
List<Organization> organizationList = List<Organization> organizationList
iOrganizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue()); = iOrganizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<ReturnMedicineInitDto.DepartmentOption> organizationOptions = organizationList.stream().map( List<ReturnMedicineInitDto.DepartmentOption> organizationOptions = organizationList.stream().map(
organization -> new ReturnMedicineInitDto.DepartmentOption(organization.getId(), organization.getName())) organization -> new ReturnMedicineInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -170,8 +167,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)), CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request); request);
// 查询退药患者分页列表 // 查询退药患者分页列表
Page<EncounterInfoDto> encounterInfoPage = Page<EncounterInfoDto> encounterInfoPage
returnMedicineMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper); = returnMedicineMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper);
encounterInfoPage.getRecords().forEach(encounterInfo -> { encounterInfoPage.getRecords().forEach(encounterInfo -> {
// 性别 // 性别
encounterInfo.setGenderEnum_enumText( encounterInfo.setGenderEnum_enumText(
@@ -230,9 +227,11 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
medicineReturnList.forEach(item -> { medicineReturnList.forEach(item -> {
switch (item.getTableName()) { switch (item.getTableName()) {
case CommonConstants.TableName.MED_MEDICATION_REQUEST -> returnMedicineList case CommonConstants.TableName.MED_MEDICATION_REQUEST ->
returnMedicineList
.add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId())); .add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId()));
case CommonConstants.TableName.WOR_DEVICE_REQUEST -> returnDeviceList case CommonConstants.TableName.WOR_DEVICE_REQUEST ->
returnDeviceList
.add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId())); .add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId()));
} }
}); });
@@ -244,11 +243,11 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
List<Long> medReturnIdList = new ArrayList<>(); List<Long> medReturnIdList = new ArrayList<>();
if (!returnMedicineList.isEmpty()) { if (!returnMedicineList.isEmpty()) {
// 获取药品退药id列表 // 获取药品退药id列表
medReturnIdList = medReturnIdList
returnMedicineList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList()); = returnMedicineList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList());
// 获取药品退药请求id列表 // 获取药品退药请求id列表
List<Long> medRequestIdList = List<Long> medRequestIdList
returnMedicineList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList()); = returnMedicineList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
if (medReturnIdList.isEmpty()) { if (medReturnIdList.isEmpty()) {
throw new ServiceException("请选择要退的药品"); throw new ServiceException("请选择要退的药品");
} }
@@ -334,11 +333,11 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
List<Long> devReturnIdList = new ArrayList<>(); List<Long> devReturnIdList = new ArrayList<>();
if (!returnDeviceList.isEmpty()) { if (!returnDeviceList.isEmpty()) {
// 获取退耗材id列表 // 获取退耗材id列表
devReturnIdList = devReturnIdList
returnDeviceList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList()); = returnDeviceList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList());
// 获取退耗材请求id列表 // 获取退耗材请求id列表
List<Long> devRequestIdList = List<Long> devRequestIdList
returnDeviceList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList()); = returnDeviceList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
if (devReturnIdList.isEmpty()) { if (devReturnIdList.isEmpty()) {
throw new ServiceException("请选择要退的耗材"); throw new ServiceException("请选择要退的耗材");
} }
@@ -402,34 +401,14 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
// 处理退库存 // 处理退库存
// 获取库存信息 // 获取库存信息
<<<<<<< HEAD List<UnDispenseInventoryDto> unDispenseInventoryList
List<UnDispenseInventoryDto> inventoryList = = returnMedicineMapper.selectInventoryInfoList(devReturnIdList, medReturnIdList,
returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (inventoryList != null && !inventoryList.isEmpty()) {
// 设置库存数量
for (UnDispenseInventoryDto inventory : inventoryList) {
// 库存表项目设定
InventoryItem inventoryItem = new InventoryItem();
// id
inventoryItem.setId(inventory.getInventoryId());
// 库存数量
if (inventory.getDispenseUnit().equals(inventory.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+待退数量
inventoryItem.setQuantity(inventory.getInventoryQuantity().add(inventory.getDispenseQuantity()));
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+退药数量(拆零比×待退数量)
inventoryItem.setQuantity(inventory.getInventoryQuantity()
.add(inventory.getPartPercent().multiply(inventory.getDispenseQuantity())));
=======
List<UnDispenseInventoryDto> unDispenseInventoryList =
returnMedicineMapper.selectInventoryInfoList(devReturnIdList, medReturnIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION); CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 库存待更新列表 // 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理 // 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap = Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId() = unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId())); + CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) { if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) { for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
@@ -443,8 +422,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
if (!unDispenseInventoryDto.getDispenseUnit() if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) { .equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加 // 转换为小单位进行累加
quantity = quantity
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent()); = unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
} }
minQuantity = minQuantity.add(quantity); minQuantity = minQuantity.add(quantity);
} }
@@ -452,7 +431,6 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
// 设置待更新的库存信息 // 设置待更新的库存信息
inventoryItemList.add(new InventoryItem().setId(inventoryList.get(0).getInventoryId()) inventoryItemList.add(new InventoryItem().setId(inventoryList.get(0).getInventoryId())
.setQuantity(inventoryList.get(0).getInventoryQuantity().add(minQuantity))); .setQuantity(inventoryList.get(0).getInventoryQuantity().add(minQuantity)));
>>>>>>> v1.3
} }
} }
// 库存更新 // 库存更新
@@ -483,18 +461,19 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
} }
// 创建映射表,添加空集合保护 // 创建映射表,添加空集合保护
Map<Long, MedicationDefinition> medicationMap = Map<Long, MedicationDefinition> medicationMap
medicationDefinitions != null ? medicationDefinitions.stream().filter(Objects::nonNull) = medicationDefinitions != null ? medicationDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(MedicationDefinition::getId, Function.identity())) : new HashMap<>(); .collect(Collectors.toMap(MedicationDefinition::getId, Function.identity())) : new HashMap<>();
Map<Long, DeviceDefinition> deviceMap = Map<Long, DeviceDefinition> deviceMap
deviceDefinitions != null ? deviceDefinitions.stream().filter(Objects::nonNull) = deviceDefinitions != null ? deviceDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(DeviceDefinition::getId, Function.identity())) : new HashMap<>(); .collect(Collectors.toMap(DeviceDefinition::getId, Function.identity())) : new HashMap<>();
// 设置库存变更参数,添加完整判空 // 设置库存变更参数,添加完整判空
for (SupplyItemDetailDto supplyItemDetailDto : supplyItemDetailList) { for (SupplyItemDetailDto supplyItemDetailDto : supplyItemDetailList) {
if (supplyItemDetailDto == null) if (supplyItemDetailDto == null) {
continue; continue;
}
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(supplyItemDetailDto.getItemTable())) { if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(supplyItemDetailDto.getItemTable())) {
if (supplyItemDetailDto.getItemId() != null) { if (supplyItemDetailDto.getItemId() != null) {
MedicationDefinition med = medicationMap.get(supplyItemDetailDto.getItemId()); MedicationDefinition med = medicationMap.get(supplyItemDetailDto.getItemId());
@@ -587,8 +566,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
throw new ServiceException("未查找到就诊诊断信息"); throw new ServiceException("未查找到就诊诊断信息");
} }
// 查询付款信息 // 查询付款信息
PaymentReconciliation paymentReconciliation = PaymentReconciliation paymentReconciliation
iPaymentReconciliationService.getOne(new LambdaQueryWrapper<PaymentReconciliation>() = iPaymentReconciliationService.getOne(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getEncounterId, chargeItem.getEncounterId()) .eq(PaymentReconciliation::getEncounterId, chargeItem.getEncounterId())
.like(PaymentReconciliation::getChargeItemIds, chargeItem.getId()) .like(PaymentReconciliation::getChargeItemIds, chargeItem.getId())
.eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue()) .eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue())
@@ -606,8 +585,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
throw new ServiceException("未查询到账户"); throw new ServiceException("未查询到账户");
} }
// 查询合同实体 // 查询合同实体
Contract contract = Contract contract
iContractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo())); = iContractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
if (contract == null) { if (contract == null) {
throw new ServiceException("未查询到合同信息"); throw new ServiceException("未查询到合同信息");
} }
@@ -643,8 +622,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
JSONArray medicalTraceNo = new JSONArray(); JSONArray medicalTraceNo = new JSONArray();
// 获取追溯码信息 // 获取追溯码信息
if (dispenseInventoryDto.getTraceNo() != null) { if (dispenseInventoryDto.getTraceNo() != null) {
List<String> traceNoList = List<String> traceNoList
Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim) = Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim)
.filter(s -> !s.isEmpty()).toList(); .filter(s -> !s.isEmpty()).toList();
for (String traceNo : traceNoList) { for (String traceNo : traceNoList) {
Map<String, String> traceNoMap = new HashMap<>(); Map<String, String> traceNoMap = new HashMap<>();
@@ -662,8 +641,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
.setSelRetnTime(dispenseInventoryDto.getDispenseTime()).setExpyEnd(dispenseInventoryDto.getExpirationDate()) .setSelRetnTime(dispenseInventoryDto.getDispenseTime()).setExpyEnd(dispenseInventoryDto.getExpirationDate())
.setDrugtracinfo(medicalTraceNo).setCertno(dispenseInventoryDto.getIdCard()); .setDrugtracinfo(medicalTraceNo).setCertno(dispenseInventoryDto.getIdCard());
// 查看所属医院 // 查看所属医院
String fixmedinsCode = String fixmedinsCode
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE); = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) { if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3506Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName); medical3506Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else { } else {
@@ -686,18 +665,14 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
} else if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(dispenseInventoryDto.getItemTable())) { } else if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(dispenseInventoryDto.getItemTable())) {
medical3506Param.setFixmedinsHilistName(CommonConstants.TableName.ADM_DEVICE_DEFINITION); medical3506Param.setFixmedinsHilistName(CommonConstants.TableName.ADM_DEVICE_DEFINITION);
} }
<<<<<<< HEAD
return medical3506Param;
=======
return Pair.of(medical3506Param, contract); return Pair.of(medical3506Param, contract);
>>>>>>> v1.3
} }
private MedicalInventory3511Param getMedical3511Param(DispenseInventoryDto dispenseInventoryDto) { private MedicalInventory3511Param getMedical3511Param(DispenseInventoryDto dispenseInventoryDto) {
MedicalInventory3511Param medicalInventory3511Param = new MedicalInventory3511Param(); MedicalInventory3511Param medicalInventory3511Param = new MedicalInventory3511Param();
String fixmedinsCode = String fixmedinsCode
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE); = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
// TODO // TODO
medicalInventory3511Param.setFixmedinsCode(fixmedinsCode).setMedinsListCodg(dispenseInventoryDto.getYbNo()) medicalInventory3511Param.setFixmedinsCode(fixmedinsCode).setMedinsListCodg(dispenseInventoryDto.getYbNo())
.setFixmedinsBchno(dispenseInventoryDto.getLotNumber()).setBegndate(dispenseInventoryDto.getDispenseTime()) .setFixmedinsBchno(dispenseInventoryDto.getLotNumber()).setBegndate(dispenseInventoryDto.getDispenseTime())

View File

@@ -1,47 +1,14 @@
package com.openhis.web.pharmacymanage.appservice.impl; package com.openhis.web.pharmacymanage.appservice.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
<<<<<<< HEAD
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.*;
=======
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
>>>>>>> v1.3
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponse;
import com.core.common.core.domain.entity.SysDictData;
import com.core.common.utils.poi.ExcelUtil;
import com.core.system.mapper.SysDictDataMapper;
import com.core.system.service.ISysDictTypeService;
import com.openhis.web.reportmanage.utils.ExcelFillerUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.exception.ServiceException;
import com.core.common.utils.*;
import com.openhis.administration.domain.Organization;
import com.openhis.administration.domain.TraceNoManage;
import com.openhis.administration.service.ILocationService;
import com.openhis.administration.service.IOrganizationService;
import com.openhis.administration.service.IPractitionerService;
=======
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -52,44 +19,20 @@ import com.core.common.utils.DateUtils;
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.openhis.administration.domain.TraceNoManage; import com.openhis.administration.domain.TraceNoManage;
>>>>>>> v1.3
import com.openhis.administration.service.ITraceNoManageService; import com.openhis.administration.service.ITraceNoManageService;
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.*; import com.openhis.common.enums.*;
import com.openhis.common.enums.ybenums.YbInvChgType; import com.openhis.common.enums.ybenums.YbInvChgType;
<<<<<<< HEAD
import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
=======
>>>>>>> v1.3
import com.openhis.medication.domain.MedicationDefinition; import com.openhis.medication.domain.MedicationDefinition;
import com.openhis.medication.domain.MedicationDispense; import com.openhis.medication.domain.MedicationDispense;
import com.openhis.medication.service.IMedicationDefinitionService; import com.openhis.medication.service.IMedicationDefinitionService;
import com.openhis.medication.service.IMedicationDispenseService; import com.openhis.medication.service.IMedicationDispenseService;
<<<<<<< HEAD
import com.openhis.medication.service.impl.MedicationRequestServiceImpl;
import com.openhis.web.basedatamanage.appservice.IPractitionerAppService;
import com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto;
import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto;
import com.openhis.web.inhospitalnursestation.appservice.IMedicineSummaryAppService;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPatientPageDto;
import com.openhis.web.inhospitalnursestation.mapper.AdviceProcessAppMapper;
import com.openhis.web.inventorymanage.appservice.impl.ReceiptApprovalAppServiceImpl;
import com.openhis.web.inventorymanage.dto.SupplyItemDetailDto;
import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService;
import com.openhis.web.pharmacymanage.dto.*;
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
import com.openhis.web.pharmacymanage.mapper.SummaryDispenseMedicineMapper;
import com.openhis.web.pharmacymanage.mapper.WesternMedicineDispenseMapper;
=======
import com.openhis.web.inventorymanage.appservice.impl.ReceiptApprovalAppServiceImpl; import com.openhis.web.inventorymanage.appservice.impl.ReceiptApprovalAppServiceImpl;
import com.openhis.web.inventorymanage.dto.SupplyItemDetailDto; import com.openhis.web.inventorymanage.dto.SupplyItemDetailDto;
import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService; import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService;
import com.openhis.web.pharmacymanage.dto.UnDispenseInventoryDto; import com.openhis.web.pharmacymanage.dto.UnDispenseInventoryDto;
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper; import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
>>>>>>> v1.3
import com.openhis.workflow.domain.InventoryItem; import com.openhis.workflow.domain.InventoryItem;
import com.openhis.workflow.domain.SupplyDelivery; import com.openhis.workflow.domain.SupplyDelivery;
import com.openhis.workflow.domain.SupplyRequest; import com.openhis.workflow.domain.SupplyRequest;
@@ -107,37 +50,11 @@ import com.openhis.workflow.service.ISupplyRequestService;
public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMedicineAppService { public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMedicineAppService {
@Resource @Resource
<<<<<<< HEAD
private IPractitionerAppService practitionerAppService;
@Resource
private IMedicationDispenseService medicationDispenseService;
@Resource
private IDeviceDispenseService deviceDispenseService;
@Resource
private IInventoryItemService iInventoryItemService;
@Resource
private SummaryDispenseMedicineMapper inpatientMedicineDispenseMapper;
@Resource
private ReturnMedicineMapper returnMedicineMapper;
@Autowired
private ILocationService locationService;
@Resource
private IPractitionerService practitionerService;
=======
private IMedicationDispenseService medicationDispenseService; private IMedicationDispenseService medicationDispenseService;
@Resource @Resource
private ReturnMedicineMapper returnMedicineMapper; private ReturnMedicineMapper returnMedicineMapper;
>>>>>>> v1.3
@Resource @Resource
private ISupplyRequestService supplyRequestService; private ISupplyRequestService supplyRequestService;
@@ -146,14 +63,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
@Resource @Resource
private ITraceNoManageService traceNoManageService; private ITraceNoManageService traceNoManageService;
<<<<<<< HEAD
@Resource
private WesternMedicineDispenseAppServiceImpl westernMedicineDispenseAppServiceImpl;
@Resource
private IMedicineSummaryAppService inpatientMedicineCollectionAppService;
=======
@Resource @Resource
private IInventoryItemService inventoryItemService; private IInventoryItemService inventoryItemService;
@@ -166,7 +75,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
@Resource @Resource
private WesternMedicineDispenseAppServiceImpl westernMedicineDispenseAppService; private WesternMedicineDispenseAppServiceImpl westernMedicineDispenseAppService;
>>>>>>> v1.3
@Resource @Resource
private WesternMedicineDispenseMapper westernMedicineDispenseMapper; private WesternMedicineDispenseMapper westernMedicineDispenseMapper;
@@ -204,426 +112,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
/** /**
* 汇总发药 * 汇总发药
* *
<<<<<<< HEAD
* @return 初始化信息
*/
@Override
public R<?> init() {
DispenseInitDto initDto = new DispenseInitDto();
// 获取科室下拉选列表
List<Organization> organizationList =
organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream()
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
initDto.setDepartmentOptions(organizationOptions);
return R.ok(initDto);
}
@Override
public R<?> getEncounterInfoListPage(AdmissionPageParam admissionPageParam, String startTime, String endTime,
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<AdmissionPageParam> queryWrapper = HisQueryUtils.buildQueryWrapper(admissionPageParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientWbStr, CommonConstants.FieldName.PatientPyStr,
CommonConstants.FieldName.PatientName, CommonConstants.FieldName.BusNo)),
request);
// 入院患者分页列表
Page<AdmissionPatientPageDto> admissionPatientPage =
adviceProcessAppMapper.selectInpatientPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.IMP.getValue(), EncounterZyStatus.TO_BE_REGISTERED.getValue(),
EncounterZyStatus.REGISTERED.getValue(), EncounterActivityStatus.ACTIVE.getValue(),
LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(), LocationForm.BED.getValue());
admissionPatientPage.getRecords().forEach(e -> {
// 性别枚举
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
// 病情
e.setPriorityEnum_enumText(EnumUtils.getInfoByValue(PriorityLevel.class, e.getPriorityEnum()));
// 计算年龄
if (e.getBirthDate() != null) {
e.setAge(AgeCalculatorUtil.getAge(e.getBirthDate()));
}
// 住院状态
e.setEncounterStatus_enumText(EnumUtils.getInfoByValue(EncounterZyStatus.class, e.getEncounterStatus()));
});
return R.ok(admissionPatientPage);
}
/**
* 住院汇总药品
*
* @param searchParam 查询信息
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return 药品汇总
*/
@Override
public R<?> getSummaryMedicationInfo(MedicineSummarySearchParam searchParam, Integer pageNo, Integer pageSize) {
ItemDispenseOrderDto itemDispenseOrderDto = new ItemDispenseOrderDto();
itemDispenseOrderDto.setEncounterId(searchParam.getEncounterId());
// 发药状态初始化
Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum();
itemDispenseOrderDto.setStatusEnum(null);
// 构建查询条件
QueryWrapper<ItemDispenseOrderDto> queryWrapper =
HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
// 处方单信息查询
Page<ItemDispenseOrderDto> medicineDispenseOrderPage =
westernMedicineDispenseMapper.selectMedicineDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus);
medicineDispenseOrderPage.getRecords().forEach(medicineDispenseOrder -> {
// 发药状态
medicineDispenseOrder.setStatusEnum_enumText(
EnumUtils.getInfoByValue(DispenseStatus.class, medicineDispenseOrder.getStatusEnum()));
// 设置所在表名
medicineDispenseOrder.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION);
});
return R.ok(medicineDispenseOrderPage);
}
/**
* 导出住院发药信息到Excel
*
* @param searchParam 查询参数
* @param searchKey 搜索关键字
* @param pageNo 页码
* @param pageSize 每页大小
* @param request HTTP请求对象
* @param response HTTP响应对象
*/
@Override
public void makeExcelFile(MedicineSummarySearchParam searchParam, Integer pageNo,
Integer pageSize, String searchKey,
HttpServletRequest request, HttpServletResponse response) {
// 获取发药数据
R<?> result = this.getSummaryMedicationInfo(searchParam,1, 10000);
if (result != null && result.getCode() == 200 && result.getData() != null) {
// 获取Page对象中的记录列表
Page<ItemDispenseOrderDto> pageData = (Page<ItemDispenseOrderDto>) result.getData();
List<ItemDispenseOrderDto> dataList = pageData.getRecords();
try {
//获取药品类型
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
String itemType = itemDispenseOrderDto.getItemType();
if (itemType != null) {
List<SysDictData> itemTypeList = sysDictTypeService.selectDictDataByType("med_category_code");
if (itemTypeList != null) {
for (SysDictData dictData : itemTypeList) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(itemType)) {
itemDispenseOrderDto.setItemType_dictText(dictData.getDictLabel());
break;
}
}
}
}
}
//用药频次
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
String rateCode = itemDispenseOrderDto.getRateCode();
if (rateCode != null) {
List<SysDictData> rateCodeList = sysDictTypeService.selectDictDataByType("rate_code");
if (rateCodeList != null) {
for (SysDictData dictData : rateCodeList) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(rateCode)) {
itemDispenseOrderDto.setRateCode_dictText(dictData.getDictLabel());
break;
}
}
}
}
}
//用法
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
String methodCode = itemDispenseOrderDto.getMethodCode();
if (methodCode != null) {
List<SysDictData> methodCodeList = sysDictTypeService.selectDictDataByType("method_code");
if (methodCodeList != null) {
for (SysDictData dictData : methodCodeList) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(methodCode)) {
itemDispenseOrderDto.setMethodCode_dictText(dictData.getDictLabel());
break;
}
}
}
}
}
// 计量单位
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
//获取计量单位翻译前的值
String doseUnitCode = itemDispenseOrderDto.getDoseUnitCode();
if (doseUnitCode != null) {
//从系统字典服务中查询计量单位的值
List<SysDictData> doseUnitCodeList = sysDictTypeService.selectDictDataByType("unit_code");
if (doseUnitCodeList != null) {
for (SysDictData dictData : doseUnitCodeList) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(doseUnitCode)) {
itemDispenseOrderDto.setDoseUnitCode_dictText(dictData.getDictLabel());
break;
}
}
}
}
}
// 获取单位翻译值
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
//获取单位翻译前的值
String unitCode = itemDispenseOrderDto.getUnitCode();
if (unitCode != null) {
//从系统字典服务中查询单位的值
List<SysDictData> unitCodeList = sysDictTypeService.selectDictDataByType("unit_code");
if (unitCodeList != null) {
for (SysDictData dictData : unitCodeList) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(unitCode)) {
itemDispenseOrderDto.setUnitCode_dictText(dictData.getDictLabel());
break;
}
}
}
}
}
// 金额保留两位小数
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
//获取金额的值
BigDecimal totalPrice = itemDispenseOrderDto.getTotalPrice();
//把金额值转换成double
double doubleValue = totalPrice.doubleValue();
double value = Math.round(doubleValue * 100.0) / 100.0;
itemDispenseOrderDto.setTotalPrice(BigDecimal.valueOf(value));
}
// 单价保留两位小数
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
//获取单价的值
BigDecimal unitPrice = itemDispenseOrderDto.getUnitPrice();
//把单价值转换成double
double valueLis = unitPrice.doubleValue();
double valuePis = Math.round(valueLis * 100.0) / 100.0;
itemDispenseOrderDto.setUnitPrice(BigDecimal.valueOf(valuePis));
}
//单次剂量保留两位小数
for (ItemDispenseOrderDto itemDispenseOrderDto : dataList) {
//获取单次剂量的值
BigDecimal dose = itemDispenseOrderDto.getDose();
//把单次剂量转换成double
double valuePas = dose.doubleValue();
double valueRas = Math.round(valuePas * 100.0) / 100.0;
itemDispenseOrderDto.setDose(BigDecimal.valueOf(valueRas));
}
ExcelUtil<ItemDispenseOrderDto> util = new ExcelUtil<ItemDispenseOrderDto>(ItemDispenseOrderDto.class);
util.exportExcel(response, dataList, "住院发药单");
} catch (Exception e) {
e.printStackTrace();
System.out.printf("导出住院发药Excel失败%s", e.getMessage());
}
}
}
/**
* 住院汇总发药单
*
* @param searchParam 查询信息
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 药品汇总
*/
@Override
public R<?> getSummaryFromInfo(FromSummarySearchParam searchParam, String startTime, String endTime,
String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<MedicineSummarySearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(searchParam, searchKey,
new HashSet<>(List.of(CommonConstants.FieldName.ApplicantName, CommonConstants.FieldName.BusNo)), request);
// 查询医嘱详细信息
Page<MedicineSummaryDto> prescriptionItemInfoPageDto =
inpatientMedicineDispenseMapper.selectMedicationSummaryInfo(new Page<>(pageNo, pageSize), queryWrapper);
List<MedicineSummaryDto> medicineSummaryDtoList = prescriptionItemInfoPageDto.getRecords();
List<MedicineSummaryDto.Option> unitList;
// 个别项目设定
for (MedicineSummaryDto prescriptionInfoDto : medicineSummaryDtoList) {
// 状态
prescriptionInfoDto.setStatusEnum_enumText(
EnumUtils.getInfoByValue(DispenseStatus.class, prescriptionInfoDto.getStatusEnum()));
// 追溯码单位列表
unitList = new ArrayList<>();
unitList.add(new MedicineSummaryDto.Option(prescriptionInfoDto.getMaxUnitCode(),
prescriptionInfoDto.getMaxUnitCode_dictText()));
unitList.add(new MedicineSummaryDto.Option(prescriptionInfoDto.getMinUnitCode(),
prescriptionInfoDto.getMinUnitCode_dictText()));
prescriptionInfoDto.setUnitList(unitList);
}
// 获取当前用户id
Long userId = SecurityUtils.getUserId();
UserAndPractitionerDto userAndPractitionerDto = new UserAndPractitionerDto();
userAndPractitionerDto.setUserId(userId);
IPage<UserAndPractitionerDto> userPractitionerPage =
practitionerAppService.getUserPractitionerPage(userAndPractitionerDto, "", 1, 1);
// 查询该用户管理的药房
List<Long> locationIdList = userPractitionerPage.getRecords().get(0).getManageMedicationLocationDtoList()
.stream().map(PractitionerOrgAndLocationDto::getLocationId).toList();
List<FromSummaryDto> fromSummaryDtoList = new ArrayList<>();
for (MedicineSummaryDto medicineSummaryDto : medicineSummaryDtoList) {
FromSummaryDto fromSummaryDto = new FromSummaryDto();
BeanUtils.copyProperties(medicineSummaryDto, fromSummaryDto);
if (!locationIdList.isEmpty() && locationIdList.contains(fromSummaryDto.getSourceLocationId()))
fromSummaryDtoList.add(fromSummaryDto);
}
return R.ok(fromSummaryDtoList);
}
/**
* 住院药品汇总发药单详细
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
@Override
public R<?> getOrderInfo(FromSearchParam searchParam, String searchKey, Integer pageNo, Integer pageSize,
HttpServletRequest request) {
// 构建查询条件
QueryWrapper<FromSearchParam> queryWrapper =
HisQueryUtils.buildQueryWrapper(searchParam, searchKey, null, request);
// 查询医嘱详细信息
Page<MedicineSummaryDto> prescriptionItemInfoPageDto =
inpatientMedicineDispenseMapper.selectOrderInfo(new Page<>(pageNo, pageSize), queryWrapper);
List<MedicineSummaryDto.Option> unitList;
// 个别项目设定
for (MedicineSummaryDto prescriptionInfoDto : prescriptionItemInfoPageDto.getRecords()) {
// 状态
prescriptionInfoDto.setStatusEnum_enumText(
EnumUtils.getInfoByValue(DispenseStatus.class, prescriptionInfoDto.getStatusEnum()));
// 追溯码单位列表
unitList = new ArrayList<>();
unitList.add(new MedicineSummaryDto.Option(prescriptionInfoDto.getMaxUnitCode(),
prescriptionInfoDto.getMaxUnitCode_dictText()));
unitList.add(new MedicineSummaryDto.Option(prescriptionInfoDto.getMinUnitCode(),
prescriptionInfoDto.getMinUnitCode_dictText()));
prescriptionInfoDto.setUnitList(unitList);
}
return R.ok(prescriptionItemInfoPageDto);
}
/**
* 处方单核对发药
*
* @param dispenseMedicineList 发药信息
* @return 处理结果
*/
@Override
public R<?> SummaryDispenseMedicine(List<DispenseItemDto> dispenseMedicineList) {
// 汇总状态更新标志
boolean summaryFlag = false;
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 获取发药单id列表
List<Long> medDispenseIdList =
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
if (medDispenseIdList.stream().allMatch(Objects::isNull)) {
List<String> busNoList =
dispenseMedicineList.stream().map(DispenseItemDto::getBusNo).collect(Collectors.toList());
medDispenseIdList = medicationDispenseService.getMedDispenseBySummaryNo(busNoList).stream()
.map(MedicationDispense::getId).toList();
summaryFlag = true;
}
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(
unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
}
inventoryItemList.add(inventoryItem);
}
}
}
// 药品发药信息查询
List<MedicationDispense> dispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
=======
* @param summaryNoList 汇总单列表 * @param summaryNoList 汇总单列表
* @return 处理结果 * @return 处理结果
*/ */
@@ -638,11 +126,11 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
if (medDispenseList == null || medDispenseList.isEmpty()) { if (medDispenseList == null || medDispenseList.isEmpty()) {
return R.fail("未查询到发药单明细,请刷新后重试"); return R.fail("未查询到发药单明细,请刷新后重试");
} }
List<Long> medDispenseIdList = List<Long> medDispenseIdList
medDispenseList.stream().map(MedicationDispense::getId).collect(Collectors.toList()); = medDispenseList.stream().map(MedicationDispense::getId).collect(Collectors.toList());
// 获取药品待发放库存信息 // 获取药品待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList = List<UnDispenseInventoryDto> unDispenseInventoryList
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList, = returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION); CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) { if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
@@ -651,8 +139,8 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
// 库存待更新列表 // 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理 // 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap = Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId() = unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId())); + CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) { if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) { for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
@@ -674,8 +162,8 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
if (!unDispenseInventoryDto.getDispenseUnit() if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) { .equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加 // 转换为小单位进行累加
quantity = quantity
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent()); = unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
} }
minQuantity = minQuantity.add(quantity); minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum()) if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
@@ -696,86 +184,10 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
} }
} }
Date now = DateUtils.getNowDate(); Date now = DateUtils.getNowDate();
>>>>>>> v1.3
// 追溯码列表 // 追溯码列表
List<TraceNoManage> tracesNoManageList = new ArrayList<>(); List<TraceNoManage> tracesNoManageList = new ArrayList<>();
TraceNoManage traceNoManage; TraceNoManage traceNoManage;
List<SupplyItemDetailDto> supplyItemDetailList = new ArrayList<>(); List<SupplyItemDetailDto> supplyItemDetailList = new ArrayList<>();
<<<<<<< HEAD
if (dispenseList != null) {
// if (dispenseList.stream().map(MedicationDispense::getStatusEnum)
// .anyMatch(x -> !x.equals(DispenseStatus.PREPARED.getValue()))) {
// throw new ServiceException("发药失败,请检查发药单状态");
// } else {
for (MedicationDispense medicationDispense : dispenseList) {
// 药品发放状态
medicationDispense.setStatusEnum(DispenseStatus.COMPLETED.getValue());
// 状态变更时间
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
// 发药数量
medicationDispense.setDispenseQuantity(medicationDispense.getQuantity());
// 发药时间
medicationDispense.setDispenseTime(DateUtils.getNowDate());
// 发药人
medicationDispense.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId());
// 设置库存变更参数
supplyItemDetailList.add(new SupplyItemDetailDto().setItemId(medicationDispense.getMedicationId())
.setLotNumber(medicationDispense.getLotNumber())
.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION));
// 使用逗号分割追溯码并转换为List
if (medicationDispense.getTraceNo() != null) {
String[] traceNoList = medicationDispense.getTraceNo().split(CommonConstants.Common.COMMA);
for (String item : traceNoList) {
traceNoManage = new TraceNoManage();
// 追溯码处理
traceNoManage.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
// 项目id
.setItemId(medicationDispense.getMedicationId())
// 仓库类型
.setLocationTypeEnum(LocationForm.PHARMACY.getValue())
// 仓库
.setLocationId(medicationDispense.getLocationId())
// 产品批号
.setLotNumber(medicationDispense.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.OUT.getValue())
// 追溯码单位
.setUnitCode(medicationDispense.getUnitCode())
// 操作类型
.setOperationType(SupplyType.DISPENSE_MEDICATION.getValue());
tracesNoManageList.add(traceNoManage);
}
}
}
// 药品发放更新
medicationDispenseService.updateBatchById(dispenseList);
// 汇总发放更新
if (summaryFlag) {
List<Long> requestId = supplyRequestService.getSupplyByBusNo(dispenseMedicineList.get(0).getBusNo())
.stream().map(SupplyRequest::getId).collect(Collectors.toList());
List<SupplyDelivery> supplyDeliveryList = supplyDeliveryService.selectByRequestIdList(requestId);
for (SupplyDelivery supplyDelivery : supplyDeliveryList) {
// 药品发放状态
supplyDelivery.setStatusEnum(DispenseStatus.COMPLETED.getValue());
// 发药时间
supplyDelivery.setOccurrenceTime(DateUtils.getNowDate());
// 发药人
supplyDelivery.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId());
}
supplyDeliveryService.updateBatchById(supplyDeliveryList);
List<SupplyRequest> supplyRequestList = supplyRequestService.selectByIdList(requestId);
for (SupplyRequest supplyRequest : supplyRequestList) {
supplyRequest.setStatusEnum(DispenseStatus.COMPLETED.getValue());
}
supplyRequestService.updateBatchById(supplyRequestList);
}
// }
} else {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
=======
// 更新发药明细状态 // 更新发药明细状态
for (MedicationDispense medicationDispense : medDispenseList) { for (MedicationDispense medicationDispense : medDispenseList) {
// 药品发放状态 // 药品发放状态
@@ -855,7 +267,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
} }
supplyRequestService.updateBatchById(supplyRequestList); supplyRequestService.updateBatchById(supplyRequestList);
>>>>>>> v1.3
// 库存更新 // 库存更新
inventoryItemService.updateBatchById(inventoryItemList); inventoryItemService.updateBatchById(inventoryItemList);
// 追溯码管理表数据追加 // 追溯码管理表数据追加
@@ -885,11 +296,7 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
} }
uploadFailedNoList = westernMedicineDispenseAppService.ybMedicineIntegrated(medDispenseIdList, null); uploadFailedNoList = westernMedicineDispenseAppService.ybMedicineIntegrated(medDispenseIdList, null);
uploadFailedNoList = receiptApprovalAppService.ybInventoryIntegrated(supplyItemDetailList, uploadFailedNoList = receiptApprovalAppService.ybInventoryIntegrated(supplyItemDetailList,
<<<<<<< HEAD
YbInvChgType.OTHER_OUT, DateUtils.getNowDate());
=======
YbInvChgType.OTHER_OUT, DateUtils.getNowDate(), true); YbInvChgType.OTHER_OUT, DateUtils.getNowDate(), true);
>>>>>>> v1.3
if (uploadFailedNoList != null) { if (uploadFailedNoList != null) {
returnMsg = "3505商品销售上传错误错误项目编码" + uploadFailedNoList; returnMsg = "3505商品销售上传错误错误项目编码" + uploadFailedNoList;
} else { } else {
@@ -902,27 +309,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
/** /**
* 作废 * 作废
* *
<<<<<<< HEAD
* @param dispenseMedicineList 作废信息
* @return 处理结果
*/
@Override
public R<?> dispenseCancel(List<DispenseItemDto> dispenseMedicineList) {
// 汇总状态更新标志
boolean summaryFlag = false;
// 获取发药单id列表
List<Long> medDispenseIdList =
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
if (medDispenseIdList.isEmpty()) {
List<String> busNoList =
dispenseMedicineList.stream().map(DispenseItemDto::getBusNo).collect(Collectors.toList());
medDispenseIdList = medicationDispenseService.getMedDispenseBySummaryNo(busNoList).stream()
.map(MedicationDispense::getId).toList();
summaryFlag = true;
}
=======
* @param summaryNoList 汇总单列表 * @param summaryNoList 汇总单列表
* @return 处理结果 * @return 处理结果
*/ */
@@ -936,7 +322,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
List<Long> medDispenseIdList = medicationDispenseService.getMedDispenseBySummaryNo(summaryNoList).stream() List<Long> medDispenseIdList = medicationDispenseService.getMedDispenseBySummaryNo(summaryNoList).stream()
.map(MedicationDispense::getId).toList(); .map(MedicationDispense::getId).toList();
>>>>>>> v1.3
// 药品发药信息查询 // 药品发药信息查询
List<MedicationDispense> dispenseList = medicationDispenseService List<MedicationDispense> dispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList)); .list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
@@ -945,26 +330,16 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
// 药品发放状态 // 药品发放状态
medicationDispense.setStatusEnum(DispenseStatus.DECLINED.getValue()); medicationDispense.setStatusEnum(DispenseStatus.DECLINED.getValue());
// 未发药原因 // 未发药原因
<<<<<<< HEAD
medicationDispense.setNotPerformedReasonEnum(dispenseMedicineList.get(0).getNotPerformedReasonEnum());
=======
// medicationDispense.setNotPerformedReasonEnum(dispenseMedicineList.get(0).getNotPerformedReasonEnum()); // medicationDispense.setNotPerformedReasonEnum(dispenseMedicineList.get(0).getNotPerformedReasonEnum());
>>>>>>> v1.3
// 状态变更时间 // 状态变更时间
medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
} }
// 药品发放更新 // 药品发放更新
medicationDispenseService.updateBatchById(dispenseList); medicationDispenseService.updateBatchById(dispenseList);
// 汇总发放更新 // 汇总发放更新
<<<<<<< HEAD
if (summaryFlag) {
List<Long> requestId = supplyRequestService.getSupplyByBusNo(dispenseMedicineList.get(0).getBusNo())
.stream().map(SupplyRequest::getId).collect(Collectors.toList());
=======
for (String summaryNo : summaryNoList) { for (String summaryNo : summaryNoList) {
List<Long> requestId = supplyRequestService.getSupplyByBusNo(summaryNo).stream() List<Long> requestId = supplyRequestService.getSupplyByBusNo(summaryNo).stream()
.map(SupplyRequest::getId).collect(Collectors.toList()); .map(SupplyRequest::getId).collect(Collectors.toList());
>>>>>>> v1.3
List<SupplyDelivery> supplyDeliveryList = supplyDeliveryService.selectByRequestIdList(requestId); List<SupplyDelivery> supplyDeliveryList = supplyDeliveryService.selectByRequestIdList(requestId);
for (SupplyDelivery supplyDelivery : supplyDeliveryList) { for (SupplyDelivery supplyDelivery : supplyDeliveryList) {
// 药品发放状态 // 药品发放状态
@@ -977,223 +352,4 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
} }
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)); return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null));
} }
<<<<<<< HEAD
/**
* 退药处理
*
* @param dispenseMedicineList 退药清单
* @return 处理结果
*/
@Override
public R<?> medicineReturn(List<DispenseItemDto> dispenseMedicineList) {
if (dispenseMedicineList == null || dispenseMedicineList.isEmpty()) {
return R.ok();
}
// 汇总状态更新标志
boolean summaryFlag = false;
// 获取发药单id列表
List<Long> medDispenseIdList =
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
if (medDispenseIdList.stream().allMatch(Objects::isNull)) {
List<String> busNoList =
dispenseMedicineList.stream().map(DispenseItemDto::getBusNo).collect(Collectors.toList());
medDispenseIdList = medicationDispenseService.getMedDispenseBySummaryNo(busNoList).stream()
.map(MedicationDispense::getId).toList();
summaryFlag = true;
}
// 退药请求列表
List<ReturnMedicineDto> returnMedicineList = new ArrayList<>();
// 追溯码列表
List<TraceNoManage> traceNoManageList = new ArrayList<>();
TraceNoManage traceNoManage;
medDispenseIdList.forEach(dispenseId -> {
MedicationDispense medicationDispense = medicationDispenseService.getById(dispenseId);
returnMedicineList
.add(new ReturnMedicineDto().setDispenseId(dispenseId).setRequestId(medicationDispense.getMedReqId()));
});
// 获取药品退药请求id列表
List<Long> medRequestIdList =
returnMedicineList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
if (!medRequestIdList.isEmpty()) {
// 药品已退药信息查询
List<MedicationDispense> refundList = medicationDispenseService.list(
new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getMedReqId, medRequestIdList));
if (refundList != null) {
if (refundList.stream().map(MedicationDispense::getStatusEnum)
.anyMatch(x -> x.equals(DispenseStatus.REFUNDED.getValue()))) {
throw new ServiceException("药品已退药,请勿重复退药");
}
}
}
// 退药单列表
List<MedicationDispense> medicationRefundList = new ArrayList<>();
List<SupplyItemDetailDto> supplyItemDetailList = new ArrayList<>();
if (!medDispenseIdList.isEmpty()) {
// 药品已发放信息查询
List<MedicationDispense> medicationDispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
// 根据发药单对应生成退药单
for (MedicationDispense medicationDispense : medicationDispenseList) {
// 退药的药品请求id
for (ReturnMedicineDto returnMedicineDto : returnMedicineList) {
if (returnMedicineDto.getDispenseId().equals(medicationDispense.getId())) {
medicationDispense.setMedReqId(returnMedicineDto.getRequestId());
}
}
// 药品发放编码
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
// 退药状态
medicationDispense.setStatusEnum(DispenseStatus.REFUNDED.getValue());
// 状态变更时间
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
// 退药时间
medicationDispense.setDispenseTime(DateUtils.getNowDate());
// 退药人
medicationDispense.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId());
medicationDispense.setId(null);
medicationRefundList.add(medicationDispense);
// 设置库存变更参数
supplyItemDetailList.add(new SupplyItemDetailDto()
.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setItemId(medicationDispense.getMedicationId()).setLotNumber(medicationDispense.getLotNumber()));
if (medicationDispense.getTraceNo() != null) {
// 使用逗号分割追溯码并转换为List
String[] traceNoList = medicationDispense.getTraceNo().split(CommonConstants.Common.COMMA);
for (String item : traceNoList) {
traceNoManage = new TraceNoManage();
// 追溯码处理
traceNoManage.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
// 项目id
.setItemId(medicationDispense.getMedicationId())
// 仓库类型
.setLocationTypeEnum(null)
// 仓库
.setLocationId(medicationDispense.getLocationId())
// 仓位
.setLocationStoreId(null)
// 产品批号
.setLotNumber(medicationDispense.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.IN.getValue())
// 追溯码单位
.setUnitCode(medicationDispense.getUnitCode())
// 操作类型
.setOperationType(SupplyType.RETURN_MEDICATION.getValue());
traceNoManageList.add(traceNoManage);
}
}
}
medicationDispenseService.saveBatch(medicationRefundList);
// 药品退药请求状态变更(待退药→已完成)
medicationRequestService.updateCompletedStatusBatch(medRequestIdList, null, null);
// 汇总退药更新
if (summaryFlag) {
List<Long> requestId = supplyRequestService.getSupplyByBusNo(dispenseMedicineList.get(0).getBusNo())
.stream().map(SupplyRequest::getId).collect(Collectors.toList());
List<SupplyDelivery> supplyDeliveryList = supplyDeliveryService.selectByRequestIdList(requestId);
for (SupplyDelivery supplyDelivery : supplyDeliveryList) {
// 药品发放状态
supplyDelivery.setStatusEnum(DispenseStatus.REFUNDED.getValue());
// 发药时间
supplyDelivery.setOccurrenceTime(DateUtils.getNowDate());
// 发药人
supplyDelivery.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId());
}
supplyDeliveryService.updateBatchById(supplyDeliveryList);
List<SupplyRequest> supplyRequestList = supplyRequestService.selectByIdList(requestId);
for (SupplyRequest supplyRequest : supplyRequestList) {
supplyRequest.setStatusEnum(DispenseStatus.REFUNDED.getValue());
}
supplyRequestService.updateBatchById(supplyRequestList);
}
}
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (inventoryList != null && !inventoryList.isEmpty()) {
// 设置库存数量
for (UnDispenseInventoryDto inventory : inventoryList) {
// 库存表项目设定
InventoryItem inventoryItem = new InventoryItem();
// id
inventoryItem.setId(inventory.getInventoryId());
// 库存数量
if (inventory.getDispenseUnit().equals(inventory.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+待退数量
inventoryItem.setQuantity(inventory.getInventoryQuantity().add(inventory.getDispenseQuantity()));
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+退药数量(拆零比×待退数量)
inventoryItem.setQuantity(inventory.getInventoryQuantity()
.add(inventory.getPartPercent().multiply(inventory.getDispenseQuantity())));
}
inventoryItemList.add(inventoryItem);
}
// 库存更新
iInventoryItemService.updateBatchById(inventoryItemList);
// 追溯码管理表数据追加
traceNoManageService.saveBatch(traceNoManageList);
}
// 返回信息
String returnMsg = null;
List<String> uploadFailedNoList;
// 调用医保商品销售退货接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch)) {
List<MedicationDefinition> medicationDefinitions = new ArrayList<>();
if (!medicationRefundList.isEmpty()) {
// 设置进销存参数
medicationDefinitions = medicationDefinitionService.listByIds(supplyItemDetailList.stream()
.filter(x -> x.getItemTable().equals(CommonConstants.TableName.MED_MEDICATION_DEFINITION))
.map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
}
// 创建映射表,添加空集合保护
Map<Long, MedicationDefinition> medicationMap =
medicationDefinitions != null ? medicationDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(MedicationDefinition::getId, Function.identity())) : new HashMap<>();
// 设置库存变更参数,添加完整判空
for (SupplyItemDetailDto dto : supplyItemDetailList) {
if (dto == null)
continue;
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(dto.getItemTable())) {
if (dto.getItemId() != null) {
MedicationDefinition med = medicationMap.get(dto.getItemId());
if (med != null) {
dto.setItemBusNo(med.getBusNo()).setPartPercent(med.getPartPercent())
.setRxFlag(med.getRxFlag()).setYbNo(med.getYbNo());
}
}
}
}
uploadFailedNoList = returnMedicineAppService.ybReturnIntegrated(medDispenseIdList, null);
uploadFailedNoList = receiptApprovalAppService.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.OTHER_OUT, DateUtils.getNowDate());
if (uploadFailedNoList != null) {
returnMsg = "3506商品销售退货上传错误错误项目编码" + uploadFailedNoList;
} else {
returnMsg = "3506商品销售退货上传成功";
}
}
// 返回退药成功信息
return R.ok(returnMsg, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"退药"}));
}
=======
>>>>>>> v1.3
} }

View File

@@ -129,22 +129,22 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
DispenseInitDto initDto = new DispenseInitDto(); DispenseInitDto initDto = new DispenseInitDto();
// 获取科室下拉选列表 // 获取科室下拉选列表
List<Organization> organizationList = List<Organization> organizationList
organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue()); = organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream() List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream()
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName())) .map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 获取配药人下拉选列表 // 获取配药人下拉选列表
List<Practitioner> preparerDoctorList = List<Practitioner> preparerDoctorList
westernMedicineDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode()); = westernMedicineDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode());
List<DispenseInitDto.PreparerDoctorOption> preparerDoctorOptions = preparerDoctorList.stream() List<DispenseInitDto.PreparerDoctorOption> preparerDoctorOptions = preparerDoctorList.stream()
.map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName())) .map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 未发药原因下拉选列表 // 未发药原因下拉选列表
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions = List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions
Stream.of(NotPerformedReasonEnum.values()) = Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(), .map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo())) notPerformedReason.getInfo()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -185,14 +185,14 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
Integer statusEnum = encounterInfoSearchParam.getStatusEnum(); Integer statusEnum = encounterInfoSearchParam.getStatusEnum();
encounterInfoSearchParam.setStatusEnum(null); encounterInfoSearchParam.setStatusEnum(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<EncounterInfoSearchParam> queryWrapper = QueryWrapper<EncounterInfoSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey, = HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard, new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)), CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request); request);
// 查询就诊病人列表 // 查询就诊病人列表
Page<EncounterInfoDto> encounterInfoPage = Page<EncounterInfoDto> encounterInfoPage
westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper, = westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(), statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue()); DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue());
encounterInfoPage.getRecords().forEach(encounterInfo -> { encounterInfoPage.getRecords().forEach(encounterInfo -> {
@@ -225,11 +225,11 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum(); Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum();
itemDispenseOrderDto.setStatusEnum(null); itemDispenseOrderDto.setStatusEnum(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<ItemDispenseOrderDto> queryWrapper = QueryWrapper<ItemDispenseOrderDto> queryWrapper
HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null); = HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
// 处方单信息查询 // 处方单信息查询
Page<ItemDispenseOrderDto> medicineDispenseOrderPage = Page<ItemDispenseOrderDto> medicineDispenseOrderPage
westernMedicineDispenseMapper.selectMedicineDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper, = westernMedicineDispenseMapper.selectMedicineDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(), DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus, DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus,
PublicationStatus.ACTIVE.getValue()); PublicationStatus.ACTIVE.getValue());
@@ -252,8 +252,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
@Override @Override
public R<?> medicinePrepare(List<DispenseItemDto> dispenseMedicineList) { public R<?> medicinePrepare(List<DispenseItemDto> dispenseMedicineList) {
// 追溯码集合 // 追溯码集合
List<String> traceNoList = List<String> traceNoList
dispenseMedicineList.stream().map(DispenseItemDto::getTraceNo).collect(Collectors.toList()); = dispenseMedicineList.stream().map(DispenseItemDto::getTraceNo).collect(Collectors.toList());
// 非输液药品的已出库追溯码 // 非输液药品的已出库追溯码
List<String> outTraceNoList = westernMedicineDispenseMapper.getOutTraceNo(TraceNoStatus.OUT.getValue(), List<String> outTraceNoList = westernMedicineDispenseMapper.getOutTraceNo(TraceNoStatus.OUT.getValue(),
Whether.YES.getValue(), SplitPropertyCode.OUTPATIENT_MIN_UNIT_CEIL.getValue(), Whether.YES.getValue(), SplitPropertyCode.OUTPATIENT_MIN_UNIT_CEIL.getValue(),
@@ -271,54 +271,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
return R.fail("请选择调配药师"); return R.fail("请选择调配药师");
} }
// 获取发药单id列表 // 获取发药单id列表
List<Long> medDispenseIdList = List<Long> medDispenseIdList
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList()); = dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(
unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
}
}
}
}
}
=======
>>>>>>> v1.3
// 药品发药信息查询 // 药品发药信息查询
List<MedicationDispense> dispenseList = medicationDispenseService List<MedicationDispense> dispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList)); .list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
@@ -352,8 +306,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
List<MedicationRequest> medicationRequests = medicationRequestService.listByIds( List<MedicationRequest> medicationRequests = medicationRequestService.listByIds(
dispenseList.stream().map(MedicationDispense::getMedReqId).distinct().collect(Collectors.toList())); dispenseList.stream().map(MedicationDispense::getMedReqId).distinct().collect(Collectors.toList()));
// 根据请求id做map // 根据请求id做map
Map<Long, List<MedicationDispense>> dispenseMap = Map<Long, List<MedicationDispense>> dispenseMap
dispenseList.stream().collect(Collectors.groupingBy(MedicationDispense::getMedReqId)); = dispenseList.stream().collect(Collectors.groupingBy(MedicationDispense::getMedReqId));
for (MedicationRequest medicationRequest : medicationRequests) { for (MedicationRequest medicationRequest : medicationRequests) {
List<MedicationDispense> medicationDispenseList = dispenseMap.get(medicationRequest.getId()); List<MedicationDispense> medicationDispenseList = dispenseMap.get(medicationRequest.getId());
BigDecimal dispenseQuantity = BigDecimal.ZERO; BigDecimal dispenseQuantity = BigDecimal.ZERO;
@@ -387,57 +341,11 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
@Override @Override
public R<?> medicineDispense(List<DispenseItemDto> dispenseMedicineList) { public R<?> medicineDispense(List<DispenseItemDto> dispenseMedicineList) {
// 获取发药单id列表 // 获取发药单id列表
List<Long> medDispenseIdList = List<Long> medDispenseIdList
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList()); = dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取药品发放库存信息
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(
unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
=======
// 获取药品待发放库存信息 // 获取药品待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList = List<UnDispenseInventoryDto> unDispenseInventoryList
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList, = returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION); CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) { if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
@@ -451,8 +359,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
// 库存待更新列表 // 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>(); List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理 // 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap = Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId() = unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId())); + CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) { if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) { for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
@@ -474,15 +382,14 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
if (!unDispenseInventoryDto.getDispenseUnit() if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) { .equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加 // 转换为小单位进行累加
quantity = quantity
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent()); = unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
} }
minQuantity = minQuantity.add(quantity); minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum()) if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) { && unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity(); inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity();
inventoryId = unDispenseInventoryDto.getInventoryId(); inventoryId = unDispenseInventoryDto.getInventoryId();
>>>>>>> v1.3
} }
} }
if (minQuantity.compareTo(inventoryQuantity) > 0) { if (minQuantity.compareTo(inventoryQuantity) > 0) {
@@ -610,8 +517,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
@Override @Override
public R<?> medicineCancel(List<DispenseItemDto> dispenseMedicineList) { public R<?> medicineCancel(List<DispenseItemDto> dispenseMedicineList) {
// 获取发药单id列表 // 获取发药单id列表
List<Long> medDispenseIdList = List<Long> medDispenseIdList
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList()); = dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 药品发药信息查询 // 药品发药信息查询
List<MedicationDispense> dispenseList = medicationDispenseService List<MedicationDispense> dispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList)); .list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
@@ -696,8 +603,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
throw new ServiceException("未查找到就诊诊断信息"); throw new ServiceException("未查找到就诊诊断信息");
} }
// 查询付款信息 // 查询付款信息
List<PaymentReconciliation> paymentReconciliationList = List<PaymentReconciliation> paymentReconciliationList
paymentReconciliationService.list(new LambdaQueryWrapper<PaymentReconciliation>() = paymentReconciliationService.list(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getEncounterId, dispenseInventoryDto.getEncounterId()) .eq(PaymentReconciliation::getEncounterId, dispenseInventoryDto.getEncounterId())
.eq(PaymentReconciliation::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .eq(PaymentReconciliation::getTenantId, SecurityUtils.getLoginUser().getTenantId())
.like(PaymentReconciliation::getChargeItemIds, chargeItem.getId()) .like(PaymentReconciliation::getChargeItemIds, chargeItem.getId())
@@ -717,8 +624,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
throw new ServiceException("未查找到账户信息"); throw new ServiceException("未查找到账户信息");
} }
// 查询合同实体 // 查询合同实体
Contract contract = Contract contract
contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo())); = contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
if (contract == null) { if (contract == null) {
throw new ServiceException("未查找到合同信息"); throw new ServiceException("未查找到合同信息");
} }
@@ -755,8 +662,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
JSONArray medicalTraceNo = new JSONArray(); JSONArray medicalTraceNo = new JSONArray();
// 获取追溯码信息 // 获取追溯码信息
if (dispenseInventoryDto.getTraceNo() != null) { if (dispenseInventoryDto.getTraceNo() != null) {
List<String> traceNoList = List<String> traceNoList
Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim) = Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim)
.filter(s -> !s.isEmpty()).toList(); .filter(s -> !s.isEmpty()).toList();
for (String traceNo : traceNoList) { for (String traceNo : traceNoList) {
Map<String, String> traceNoMap = new HashMap<>(); Map<String, String> traceNoMap = new HashMap<>();
@@ -782,8 +689,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
medical3505Param.setTrdnFlag(Whether.NO.getCode()); medical3505Param.setTrdnFlag(Whether.NO.getCode());
} }
// 查看所属医院 // 查看所属医院
String fixmedinsCode = String fixmedinsCode
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE); = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) { if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3505Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName); medical3505Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else { } else {

View File

@@ -118,10 +118,6 @@ public class MedicationDetailsController {
// return medicationDetailsAppService.getMedRunningAccountPage(medDetailsSearchParam, pageNo, pageSize, searchKey, // return medicationDetailsAppService.getMedRunningAccountPage(medDetailsSearchParam, pageNo, pageSize, searchKey,
// request); // request);
// } // }
<<<<<<< HEAD
=======
/** /**
* 发药明细导出 * 发药明细导出
* *
@@ -132,7 +128,6 @@ public class MedicationDetailsController {
* @param response 请求数据 * @param response 请求数据
* @param request 请求数据 * @param request 请求数据
*/ */
>>>>>>> v1.3
@GetMapping(value = "/excel-out") @GetMapping(value = "/excel-out")
public void exportExcel(MedDetailsSearchParam medDetailsSearchParam, public void exportExcel(MedDetailsSearchParam medDetailsSearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,

View File

@@ -3,21 +3,11 @@ package com.openhis.web.pharmacymanage.controller;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.pharmacymanage.dto.*;
import org.springframework.web.bind.annotation.*;
=======
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
>>>>>>> v1.3
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService; import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService;
@@ -25,7 +15,6 @@ import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppServ
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
* 住院汇总发药 * 住院汇总发药
* *
@@ -42,98 +31,6 @@ public class SummaryDispenseMedicineController {
public ISummaryDispenseMedicineAppService medicineSummaryDispenseService; public ISummaryDispenseMedicineAppService medicineSummaryDispenseService;
/** /**
<<<<<<< HEAD
* 获取页面初始化信息
*
* @return 初始化信息
*/
@GetMapping(value = "/init")
public R<?> medicineDispenseInit() {
return medicineSummaryDispenseService.init();
}
/**
* 分页查询住院病人列表
*
* @param admissionPageParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 病人列表
*/
@GetMapping("/encounter-list")
public R<?> getEncounterInfoList(AdmissionPageParam admissionPageParam, String startTime, String endTime,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return medicineSummaryDispenseService.getEncounterInfoListPage(admissionPageParam, startTime, endTime, pageNo,
pageSize, searchKey, request);
}
/**
* 住院汇总药品
*
* @param searchParam 查询信息
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return 药品汇总
*/
@GetMapping("/medication_summary-list")
public R<?> getSummaryMedicationInfo(MedicineSummarySearchParam searchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
return medicineSummaryDispenseService.getSummaryMedicationInfo(searchParam, pageNo, pageSize);
}
/**
* 住院汇总发药单
*
* @param searchParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 汇总单汇总
*/
@GetMapping("/from_summary-list")
public R<?> getSummaryFromInfo(FromSummarySearchParam searchParam, String startTime, String endTime,
String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return medicineSummaryDispenseService.getSummaryFromInfo(searchParam, startTime, endTime, searchKey, pageNo,
pageSize, request);
}
/**
* 住院药品汇总发药单详细
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
@GetMapping("/from-list")
public R<?> getFromInfo(FromSearchParam searchParam, String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return medicineSummaryDispenseService.getOrderInfo(searchParam, searchKey, pageNo, pageSize, request);
}
/**
* 药品发药
*
* @param dispenseMedicineList 发药信息
* @return 处理结果
*/
@PutMapping("/summary-dispense-medicine")
public R<?> SummaryDispenseMedicine(@RequestBody List<DispenseItemDto> dispenseMedicineList) {
return medicineSummaryDispenseService.SummaryDispenseMedicine(dispenseMedicineList);
=======
* 汇总发药 * 汇总发药
* *
* @param summaryNoList 汇总单列表 * @param summaryNoList 汇总单列表
@@ -142,66 +39,11 @@ public class SummaryDispenseMedicineController {
@PutMapping("/summary-dispense-medicine") @PutMapping("/summary-dispense-medicine")
public R<?> SummaryDispenseMedicine(@RequestBody List<String> summaryNoList) { public R<?> SummaryDispenseMedicine(@RequestBody List<String> summaryNoList) {
return medicineSummaryDispenseService.SummaryDispenseMedicine(summaryNoList); return medicineSummaryDispenseService.SummaryDispenseMedicine(summaryNoList);
>>>>>>> v1.3
} }
/** /**
* 作废 * 作废
* *
<<<<<<< HEAD
* @param dispenseMedicineList 作废信息
* @return 处理结果
*/
@PutMapping("/dispense-cancel")
public R<?> dispenseCancel(@RequestBody List<DispenseItemDto> dispenseMedicineList) {
return medicineSummaryDispenseService.dispenseCancel(dispenseMedicineList);
}
/**
* 退药处理
*
* @param dispenseMedicineList 退药清单
* @return 处理结果
*/
@PutMapping("/medicine-return")
public R<?> medicineReturn(@RequestBody List<DispenseItemDto> dispenseMedicineList) {
return medicineSummaryDispenseService.medicineReturn(dispenseMedicineList);
}
/**
* 住院发药
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
@GetMapping(value = "/excel-out")
public void excelOut(MedicineSummarySearchParam searchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10000") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey,
HttpServletRequest request,HttpServletResponse response) {
medicineSummaryDispenseService.makeExcelFile(searchParam, pageNo, pageSize, searchKey, request, response);
}
/**
* 住院药品汇总
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
=======
* @param summaryNoList 汇总单列表 * @param summaryNoList 汇总单列表
* @return 处理结果 * @return 处理结果
*/ */
@@ -245,5 +87,4 @@ public class SummaryDispenseMedicineController {
// HttpServletResponse response) { // HttpServletResponse response) {
// medicineSummaryDispenseService.takeExcelField(searchParam, searchKey, pageNo, pageSize, request, response); // medicineSummaryDispenseService.takeExcelField(searchParam, searchKey, pageNo, pageSize, request, response);
// } // }
>>>>>>> v1.3
} }

View File

@@ -21,29 +21,40 @@ import java.math.BigDecimal;
@Accessors(chain = true) @Accessors(chain = true)
public class DispenseItemDto { public class DispenseItemDto {
/** 配药人 */ /**
* 配药人
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long preparerId; private Long preparerId;
/** 发放ID */ /**
* 发放ID
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long dispenseId; private Long dispenseId;
<<<<<<< HEAD /**
======= * 发药数量
/** 发药数量 */ */
private BigDecimal quantity; private BigDecimal quantity;
/** 批号 */ /**
* 批号
*/
private String lotNumber; private String lotNumber;
>>>>>>> v1.3 /**
/** 单据号 */ * 单据号
*/
private String busNo; private String busNo;
/** 追溯码 */ /**
* 追溯码
*/
private String traceNo; private String traceNo;
/** 未发原因 */ /**
* 未发原因
*/
private Integer notPerformedReasonEnum; private Integer notPerformedReasonEnum;
} }

View File

@@ -59,31 +59,19 @@ public class ItemDispenseOrderDto {
/** /**
* 发放药房 * 发放药房
*/ */
<<<<<<< HEAD
@Excel(name = "发放药房", sort = 3) @Excel(name = "发放药房", sort = 3)
=======
@Excel(name = "发放药房", sort = 3)
>>>>>>> v1.3
private String locationName; private String locationName;
/** /**
* 批次号 * 批次号
*/ */
<<<<<<< HEAD
@Excel(name = "批次号", sort = 4) @Excel(name = "批次号", sort = 4)
=======
@Excel(name = "批次号", sort = 4)
>>>>>>> v1.3
private String lotNumber; private String lotNumber;
/** /**
* 科室 * 科室
*/ */
<<<<<<< HEAD
@Excel(name = "科室", sort = 5) @Excel(name = "科室", sort = 5)
=======
@Excel(name = "科室", sort = 5)
>>>>>>> v1.3
private String departmentName; private String departmentName;
/** /**
@@ -95,21 +83,13 @@ public class ItemDispenseOrderDto {
/** /**
* 开单医生 * 开单医生
*/ */
<<<<<<< HEAD
@Excel(name = "开单医生", sort = 6) @Excel(name = "开单医生", sort = 6)
=======
@Excel(name = "开单医生", sort = 6)
>>>>>>> v1.3
private String doctorName; private String doctorName;
/** /**
* 发药医生 * 发药医生
*/ */
<<<<<<< HEAD
@Excel(name = "发药医生", sort = 7) @Excel(name = "发药医生", sort = 7)
=======
@Excel(name = "发药医生", sort = 7)
>>>>>>> v1.3
private String dispenseDoctorName; private String dispenseDoctorName;
/** /**
@@ -117,54 +97,32 @@ public class ItemDispenseOrderDto {
*/ */
@Dict(dictCode = "med_category_code") @Dict(dictCode = "med_category_code")
private String itemType; private String itemType;
<<<<<<< HEAD
@Excel(name = "项目类型", sort = 8) @Excel(name = "项目类型", sort = 8)
=======
@Excel(name = "项目类型", sort = 8)
>>>>>>> v1.3
private String itemType_dictText; private String itemType_dictText;
/** /**
* 发药状态 * 发药状态
*/ */
private Integer statusEnum; private Integer statusEnum;
<<<<<<< HEAD
@Excel(name = "发药状态", sort = 9) @Excel(name = "发药状态", sort = 9)
=======
@Excel(name = "发药状态", sort = 9)
>>>>>>> v1.3
private String statusEnum_enumText; private String statusEnum_enumText;
/** /**
* 诊断名称 * 诊断名称
*/ */
<<<<<<< HEAD
@Excel(name = "诊断名称", sort = 10) @Excel(name = "诊断名称", sort = 10)
=======
@Excel(name = "诊断名称", sort = 10)
>>>>>>> v1.3
private String conditionName; private String conditionName;
/** /**
* 处方号 * 处方号
*/ */
<<<<<<< HEAD
@Excel(name = "处方号", sort = 11) @Excel(name = "处方号", sort = 11)
=======
@Excel(name = "处方号", sort = 11)
>>>>>>> v1.3
private String prescriptionNo; private String prescriptionNo;
/** /**
* 项目名称 * 项目名称
*/ */
<<<<<<< HEAD
@Excel(name = "项目名称", sort = 1, width = 30) @Excel(name = "项目名称", sort = 1, width = 30)
=======
@Excel(name = "项目名称", sort = 1, width = 30)
>>>>>>> v1.3
private String itemName; private String itemName;
/** /**
@@ -175,21 +133,13 @@ public class ItemDispenseOrderDto {
/** /**
* 规格 * 规格
*/ */
<<<<<<< HEAD
@Excel(name = "规格", sort = 2, width = 30) @Excel(name = "规格", sort = 2, width = 30)
=======
@Excel(name = "规格", sort = 2, width = 30)
>>>>>>> v1.3
private String totalVolume; private String totalVolume;
/** /**
* 单次剂量 * 单次剂量
*/ */
<<<<<<< HEAD
@Excel(name = "单次剂量", sort = 12) @Excel(name = "单次剂量", sort = 12)
=======
@Excel(name = "单次剂量", sort = 12)
>>>>>>> v1.3
private BigDecimal dose; private BigDecimal dose;
/** /**
@@ -202,11 +152,7 @@ public class ItemDispenseOrderDto {
*/ */
@Dict(dictCode = "rate_code") @Dict(dictCode = "rate_code")
private String rateCode; private String rateCode;
<<<<<<< HEAD
@Excel(name = "用药频次", sort = 13) @Excel(name = "用药频次", sort = 13)
=======
@Excel(name = "用药频次", sort = 13)
>>>>>>> v1.3
private String rateCode_dictText; private String rateCode_dictText;
/** /**
@@ -214,60 +160,35 @@ public class ItemDispenseOrderDto {
*/ */
@Dict(dictCode = "method_code") @Dict(dictCode = "method_code")
private String methodCode; private String methodCode;
<<<<<<< HEAD
@Excel(name = "用法", sort = 14) @Excel(name = "用法", sort = 14)
=======
@Excel(name = "用法", sort = 14)
>>>>>>> v1.3
private String methodCode_dictText; private String methodCode_dictText;
/** /**
* 剂量单位 * 剂量单位
*/ */
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String doseUnitCode; private String doseUnitCode;
<<<<<<< HEAD
@Excel(name = "剂量单位", sort = 15) @Excel(name = "剂量单位", sort = 15)
=======
@Excel(name = "剂量单位", sort = 15)
>>>>>>> v1.3
private String doseUnitCode_dictText; private String doseUnitCode_dictText;
/** /**
* 单位 * 单位
*/ */
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
<<<<<<< HEAD
@Excel(name = "单位", sort = 16) @Excel(name = "单位", sort = 16)
=======
@Excel(name = "单位", sort = 16)
>>>>>>> v1.3
private String unitCode_dictText; private String unitCode_dictText;
/** /**
* 单次发药数 * 单次发药数
*/ */
<<<<<<< HEAD
@Excel(name = "单次发药数", sort = 17) @Excel(name = "单次发药数", sort = 17)
=======
@Excel(name = "单次发药数", sort = 17)
>>>>>>> v1.3
private Integer dispensePerQuantity; private Integer dispensePerQuantity;
/** /**
* 每次发药供应天数 * 每次发药供应天数
*/ */
<<<<<<< HEAD
@Excel(name = "每次发药供应天数", sort = 18) @Excel(name = "每次发药供应天数", sort = 18)
=======
@Excel(name = "每次发药供应天数", sort = 18)
>>>>>>> v1.3
private Integer dispensePerDuration; private Integer dispensePerDuration;
/** /**
@@ -278,32 +199,19 @@ public class ItemDispenseOrderDto {
/** /**
* 数量 * 数量
*/ */
<<<<<<< HEAD
@Excel(name = "数量",sort = 19)
private Integer quantity;
=======
@Excel(name = "数量", sort = 19) @Excel(name = "数量", sort = 19)
private BigDecimal quantity; private BigDecimal quantity;
>>>>>>> v1.3
/** /**
* 单价 * 单价
*/ */
<<<<<<< HEAD
@Excel(name = "单价", sort = 20) @Excel(name = "单价", sort = 20)
=======
@Excel(name = "单价", sort = 20)
>>>>>>> v1.3
private BigDecimal unitPrice; private BigDecimal unitPrice;
/** /**
* 金额 * 金额
*/ */
<<<<<<< HEAD
@Excel(name = "金额", sort = 21) @Excel(name = "金额", sort = 21)
=======
@Excel(name = "金额", sort = 21)
>>>>>>> v1.3
private BigDecimal totalPrice; private BigDecimal totalPrice;
/** /**
* 组合号 * 组合号
@@ -315,66 +223,46 @@ public class ItemDispenseOrderDto {
* 就诊NO * 就诊NO
*/ */
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
<<<<<<< HEAD
@Excel(name = "就诊NO", sort = 24) @Excel(name = "就诊NO", sort = 24)
=======
@Excel(name = "就诊NO", sort = 24)
>>>>>>> v1.3
private String encounterBusNo; private String encounterBusNo;
/** 开具日期 */ /**
* 开具日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
<<<<<<< HEAD
@Excel(name = "开具日期", sort = 25, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 25) @Excel(name = "开具日期", sort = 25, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 25)
private Date reqAuthoredTime; private Date reqAuthoredTime;
/** 皮试标志 */ /**
@Excel(name = "皮试标志",sort = 26) * 接收皮试标志
private Integer skinTestFlag; */
/** 中药标识 */
@Excel(name = "中药标识",sort = 27)
private Integer tcmFlag;
/** 所在表 */
@Excel(name = "所在表",sort = 28,width = 30)
=======
@Excel(name = "开具日期", sort = 25, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 25)
private Date reqAuthoredTime;
/** 接收皮试标志 */
@Excel(name = "皮试标志", sort = 26) @Excel(name = "皮试标志", sort = 26)
private String skinTestFlagDesc; private String skinTestFlagDesc;
private Integer skinTestFlag; private Integer skinTestFlag;
/** 接收中药标识 */ /**
* 接收中药标识
*/
@Excel(name = "中药标识", sort = 27) @Excel(name = "中药标识", sort = 27)
private String tcmFlagDesc; private String tcmFlagDesc;
private Integer tcmFlag; private Integer tcmFlag;
/** 所在表 */ /**
* 所在表
*/
@Excel(name = "所在表", sort = 28, width = 30) @Excel(name = "所在表", sort = 28, width = 30)
>>>>>>> v1.3
private String itemTable; private String itemTable;
/** /**
* 生产厂家 * 生产厂家
*/ */
<<<<<<< HEAD
@Excel(name = "生产厂家", sort = 22, width = 35) @Excel(name = "生产厂家", sort = 22, width = 35)
=======
@Excel(name = "生产厂家", sort = 22, width = 35)
>>>>>>> v1.3
private String manufacturerText; private String manufacturerText;
/** /**
* 追溯码 * 追溯码
*/ */
<<<<<<< HEAD
@Excel(name = "追溯码", sort = 23) @Excel(name = "追溯码", sort = 23)
=======
@Excel(name = "追溯码", sort = 23)
>>>>>>> v1.3
private String traceNo; private String traceNo;
/** /**
@@ -384,12 +272,14 @@ public class ItemDispenseOrderDto {
private String medTypeCode; private String medTypeCode;
private String medTypeCode_dictText; private String medTypeCode_dictText;
/**
/** 输液标志 */ * 输液标志
*/
private Integer injectFlag; private Integer injectFlag;
/**
/** 拆分属性 */ * 拆分属性
*/
private Integer partAttributeEnum; private Integer partAttributeEnum;
/** /**

View File

@@ -1,11 +1,5 @@
package com.openhis.web.pharmacymanage.dto; package com.openhis.web.pharmacymanage.dto;
<<<<<<< HEAD
import java.math.BigDecimal;
import java.util.Date;
=======
>>>>>>> v1.3
import com.core.common.annotation.Excel; import com.core.common.annotation.Excel;
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;
@@ -22,13 +16,10 @@ import lombok.experimental.Accessors;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class MedDetailedAccountPageDto { public class MedDetailedAccountPageDto {
<<<<<<< HEAD
/** 门诊号 */
=======
/** /**
* 门诊号 * 门诊号
*/ */
>>>>>>> v1.3
private String outpatientNo; private String outpatientNo;
/** /**
@@ -41,37 +32,6 @@ public class MedDetailedAccountPageDto {
*/ */
private String patientName; private String patientName;
<<<<<<< HEAD
/** 项目类别 */
private String pinYin;
/** 接收发药数量 */
@Excel(name = "发药数量")
private String dispenseQuantitystr;
/** 接收发药金额 */
@Excel(name = "发药金额")
private String dispensePricestr;
/** 接收退药数量 */
@Excel(name = "退药数量")
private String refundQuantitystr;
/** 接收退药金额 */
@Excel(name = "退药金额")
private String refundPricestr;
/** 发药人 */
@JsonSerialize(using = ToStringSerializer.class)
private String practitionerId;
/** 发药人名称 */
@Excel(name = "发药人")
private String practitionerName;
/** 药品项目 */
@Excel(name = "药品项目")
=======
/** /**
* 接收发药数量 * 接收发药数量
*/ */
@@ -117,7 +77,6 @@ public class MedDetailedAccountPageDto {
* 药品项目 * 药品项目
*/ */
@Excel(name = "药品项目", sort = 3) @Excel(name = "药品项目", sort = 3)
>>>>>>> v1.3
private String medicationName; private String medicationName;
/** /**
@@ -125,22 +84,6 @@ public class MedDetailedAccountPageDto {
*/ */
private String pyStr; private String pyStr;
<<<<<<< HEAD
/** 项目编码 */
@Excel(name = "药品编码")
private String busNo;
/** 发药编码 */
@Excel(name = "发药单号")
private String dispenseNo;
/** 医保编码 */
@Excel(name = "医保编码")
private String ybNo;
/** 规格 */
@Excel(name = "规格")
=======
/** /**
* 项目编码 * 项目编码
*/ */
@@ -163,7 +106,6 @@ public class MedDetailedAccountPageDto {
* 规格 * 规格
*/ */
@Excel(name = "规格", sort = 7, width = 30) @Excel(name = "规格", sort = 7, width = 30)
>>>>>>> v1.3
private String totalVolume; private String totalVolume;
/** /**
@@ -189,18 +131,6 @@ public class MedDetailedAccountPageDto {
* 成本金额 * 成本金额
*/ */
<<<<<<< HEAD
/** 批号 */
@Excel(name = "生产批号")
private String lotNumber;
/** 厂商 */
@Excel(name = "厂家/产地")
private String manufacturerText;
/** 供应商 */
@Excel(name = "供应商")
=======
private BigDecimal costPrice; private BigDecimal costPrice;
/** /**
@@ -219,7 +149,6 @@ public class MedDetailedAccountPageDto {
* 供应商 * 供应商
*/ */
@Excel(name = "供应商", sort = 15, width = 35) @Excel(name = "供应商", sort = 15, width = 35)
>>>>>>> v1.3
private String supplierName; private String supplierName;
/** /**
@@ -236,14 +165,6 @@ public class MedDetailedAccountPageDto {
private String refundUnitCode; private String refundUnitCode;
private String refundUnitCode_dictText; private String refundUnitCode_dictText;
<<<<<<< HEAD
/** 发药时间 */
@Excel(name = "发药时间", dateFormat="yyyy-MM-dd HH:mm:ss")
private Date dispenseTime;
/** 项目所在表 */
// @Excel(name = "项目类别")
=======
/** /**
* 发药时间 * 发药时间
*/ */
@@ -254,6 +175,5 @@ public class MedDetailedAccountPageDto {
* 项目所在表 * 项目所在表
*/ */
@Excel(name = "项目类别", sort = 4) @Excel(name = "项目类别", sort = 4)
>>>>>>> v1.3
private String itemTable; private String itemTable;
} }

View File

@@ -15,36 +15,53 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class MedDetailsSearchParam { public class MedDetailsSearchParam {
/** 发药时间 */ /**
* 发药时间
*/
private Date dispenseTime; private Date dispenseTime;
/** 药房 */ /**
* 药房
*/
private Long locationId; private Long locationId;
/** 患者姓名 */ /**
* 患者姓名
*/
private String patientName; private String patientName;
/** 发药人 */ /**
* 发药人
*/
private Long practitionerId; private Long practitionerId;
/** 药品名称 */ /**
* 药品名称
*/
private String medicationName; private String medicationName;
/** 药品项目(药品编码) */ /**
* 药品项目(药品编码)
*/
private String busNo; private String busNo;
/** 出院状态 */ /**
* 出院状态
*/
private Integer dischargeStatus; private Integer dischargeStatus;
/** 门诊住院flg */ /**
* 门诊住院flg
*/
private Integer flag; private Integer flag;
/** 项目所在表 */ /**
* 项目所在表
*/
private String itemTable; private String itemTable;
<<<<<<< HEAD
=======
/** 统计类型 */ /**
* 统计类型
*/
private Integer inventoryScope; private Integer inventoryScope;
>>>>>>> v1.3
} }

View File

@@ -5,10 +5,6 @@ package com.openhis.web.pharmacymanage.dto;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
<<<<<<< HEAD
import java.util.List;
=======
>>>>>>> v1.3
import com.core.common.annotation.Excel; import com.core.common.annotation.Excel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -27,17 +23,22 @@ import lombok.experimental.Accessors;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class MedicineSummaryDto { public class MedicineSummaryDto {
/** /**
* 单据号 * 单据号
*/ */
@Excel(name = "单据号", sort = 8, width = 35) @Excel(name = "单据号", sort = 8, width = 35)
private String busNo; private String busNo;
/** 供应请求id */ /**
* 供应请求id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long requestId; private Long requestId;
/** 供应发放id */ /**
* 供应发放id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long deliveryId; private Long deliveryId;
@@ -51,7 +52,9 @@ public class MedicineSummaryDto {
@Excel(name = "项目名", sort = 2, width = 40) @Excel(name = "项目名", sort = 2, width = 40)
private String itemName; private String itemName;
/** 项目id */ /**
* 项目id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long itemId; private Long itemId;
@@ -91,33 +94,45 @@ public class MedicineSummaryDto {
private String unitCode; private String unitCode;
private String unitCode_dictText; private String unitCode_dictText;
/** 常规单位 */ /**
* 常规单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String maxUnitCode; private String maxUnitCode;
private String maxUnitCode_dictText; private String maxUnitCode_dictText;
/** 最小单位 */ /**
* 最小单位
*/
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
private String minUnitCode; private String minUnitCode;
private String minUnitCode_dictText; private String minUnitCode_dictText;
/** 发放地点 */ /**
* 发放地点
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long sourceLocationId; private Long sourceLocationId;
@Excel(name = "发放地点", sort = 6) @Excel(name = "发放地点", sort = 6)
private String sourceLocationName; private String sourceLocationName;
/** 申请科室 */ /**
* 申请科室
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long orgId; private Long orgId;
private String orgName; private String orgName;
/** 领药人 */ /**
* 领药人
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long applicantId; private Long applicantId;
private String applicantName; private String applicantName;
/** 申请时间 */ /**
* 申请时间
*/
private Date applyTime; private Date applyTime;
/** /**
@@ -126,6 +141,8 @@ public class MedicineSummaryDto {
private Integer statusEnum; private Integer statusEnum;
private String statusEnum_enumText; private String statusEnum_enumText;
/** 患者信息 */ /**
* 患者信息
*/
private String patientInfo; private String patientInfo;
} }

View File

@@ -22,31 +22,19 @@ public interface MedicationDetailsMapper {
* @param queryWrapper 查询条件 * @param queryWrapper 查询条件
* @param completed 发药状态:已发药 * @param completed 发药状态:已发药
* @param refunded 发药状态:已退药 * @param refunded 发药状态:已退药
<<<<<<< HEAD
* @param dispenseEnum 统计类型
* @param medMedicationDefinition 药品
* @param admDeviceDefinition 耗材
=======
* @param statisticalType 统计类型 * @param statisticalType 统计类型
* @param flg 1:住院 2门诊 * @param flg 1:住院 2门诊
* @param medMedicationDefinition 药品 * @param medMedicationDefinition 药品
* @param admDeviceDefinition 耗材 * @param admDeviceDefinition 耗材
* @param costEnum 命中条件枚举:产品批号进价 * @param costEnum 命中条件枚举:产品批号进价
>>>>>>> v1.3
* @return 门诊人员发药明细表 * @return 门诊人员发药明细表
*/ */
Page<MedDetailedAccountPageDto> selectAmbPractitionerDetailPage(@Param("page") Page<MedDetailedAccountPageDto> page, Page<MedDetailedAccountPageDto> selectAmbPractitionerDetailPage(@Param("page") Page<MedDetailedAccountPageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper, @Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper,
@Param("completed") Integer completed, @Param("agree") Integer agree, @Param("refunded") Integer refunded, @Param("completed") Integer completed, @Param("agree") Integer agree, @Param("refunded") Integer refunded,
<<<<<<< HEAD
@Param("dispenseEnum") Integer dispenseEnum, @Param("flg") Integer flg,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition);
=======
@Param("statisticalType") Integer statisticalType, @Param("flg") Integer flg, @Param("statisticalType") Integer statisticalType, @Param("flg") Integer flg,
@Param("medMedicationDefinition") String medMedicationDefinition, @Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition, @Param("costEnum") String costEnum); @Param("admDeviceDefinition") String admDeviceDefinition, @Param("costEnum") String costEnum);
>>>>>>> v1.3
// /** // /**
// * 门诊发药明细流水账 // * 门诊发药明细流水账
@@ -62,5 +50,4 @@ public interface MedicationDetailsMapper {
// @Param("page") Page<MedDetailedAccountPageDto> page, // @Param("page") Page<MedDetailedAccountPageDto> page,
// @Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper, @Param("amb") Integer amb, // @Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper, @Param("amb") Integer amb,
// @Param("completed") Integer completed, @Param("refunded") Integer refunded) // @Param("completed") Integer completed, @Param("refunded") Integer refunded)
} }

View File

@@ -27,11 +27,7 @@ public interface ReturnMedicineMapper {
* @return 退药患者分页列表 * @return 退药患者分页列表
*/ */
Page<EncounterInfoDto> selectEncounterInfoListPage(@Param("page") Page<EncounterInfoDto> page, Page<EncounterInfoDto> selectEncounterInfoListPage(@Param("page") Page<EncounterInfoDto> page,
<<<<<<< HEAD
@Param(Constants.WRAPPER) QueryWrapper<EncounterInfoDto> queryWrapper, @Param("amb") Integer amb);
=======
@Param(Constants.WRAPPER) QueryWrapper<EncounterInfoDto> queryWrapper); @Param(Constants.WRAPPER) QueryWrapper<EncounterInfoDto> queryWrapper);
>>>>>>> v1.3
/** /**
* 申请退药清单查询 * 申请退药清单查询

View File

@@ -3,37 +3,8 @@
*/ */
package com.openhis.web.pharmacymanage.mapper; package com.openhis.web.pharmacymanage.mapper;
<<<<<<< HEAD
import com.openhis.web.pharmacymanage.dto.FromSearchParam;
import org.apache.ibatis.annotations.Param;
=======
>>>>>>> v1.3
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
<<<<<<< HEAD
public interface SummaryDispenseMedicineMapper { public interface SummaryDispenseMedicineMapper {
/**
* 汇总药品信息列表查询
*
* @param page 分页
* @param queryWrapper 查询条件
* @return 汇总药品信息
*/
Page<MedicineSummaryDto> selectMedicationSummaryInfo(@Param("page") Page<MedicineSummaryDto> page,
@Param(Constants.WRAPPER) QueryWrapper<MedicineSummarySearchParam> queryWrapper);
/**
* 汇总药品信息列表查询
*
* @param page 分页
* @param queryWrapper 查询条件
* @return 汇总药品信息
*/
Page<MedicineSummaryDto> selectOrderInfo(@Param("page") Page<MedicineSummaryDto> page,
@Param(Constants.WRAPPER) QueryWrapper<FromSearchParam> queryWrapper);
} }
=======
public interface SummaryDispenseMedicineMapper {}
>>>>>>> v1.3

View File

@@ -88,23 +88,10 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
*/ */
@Override @Override
public IPage<RegPatientMainInfoDto> getRegPatientMainInfo(RegPatientMainInfoDto regPatientMainInfoDto, public IPage<RegPatientMainInfoDto> getRegPatientMainInfo(RegPatientMainInfoDto regPatientMainInfoDto,
<<<<<<< HEAD
Integer status, String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<RegPatientMainInfoDto> queryWrapper =
HisQueryUtils.buildQueryWrapper(regPatientMainInfoDto, searchKey,
new HashSet<>(Arrays.asList("bus_no", "patient_name", "inHospital_org_name", "house_name")), request);
IPage<RegPatientMainInfoDto> regPatientMainInfo = adviceManageAppMapper.getRegPatientMainInfo(
new Page<>(pageNo, pageSize), SecurityUtils.getLoginUser().getPractitionerId(),
LocationForm.WARD.getValue(), LocationForm.HOUSE.getValue(), LocationForm.BED.getValue(),
EncounterActivityStatus.ACTIVE.getValue(), EncounterClass.IMP.getValue(), status, Whether.YES.getValue(),
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), queryWrapper);
=======
String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) { String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件 // 构建查询条件
QueryWrapper<RegPatientMainInfoDto> queryWrapper = QueryWrapper<RegPatientMainInfoDto> queryWrapper
HisQueryUtils.buildQueryWrapper(regPatientMainInfoDto, searchKey, = HisQueryUtils.buildQueryWrapper(regPatientMainInfoDto, searchKey,
new HashSet<>(Arrays.asList("bus_no", "patient_name", "in_hospital_org_name", "house_name")), request); new HashSet<>(Arrays.asList("bus_no", "patient_name", "in_hospital_org_name", "house_name")), request);
// 当前登录所属的科室 // 当前登录所属的科室
Long currentUserOrganizationId = SecurityUtils.getLoginUser().getOrgId(); Long currentUserOrganizationId = SecurityUtils.getLoginUser().getOrgId();
@@ -118,8 +105,8 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), EncounterZyStatus.TO_BE_REGISTERED.getValue(), AccountType.PERSONAL_CASH_ACCOUNT.getCode(), EncounterZyStatus.TO_BE_REGISTERED.getValue(),
EncounterZyStatus.ALREADY_SETTLED.getValue(), EncounterZyStatus.REGISTERED.getValue(), queryWrapper); EncounterZyStatus.ALREADY_SETTLED.getValue(), EncounterZyStatus.REGISTERED.getValue(), queryWrapper);
// 就诊ID集合 // 就诊ID集合
List<Long> encounterIds = List<Long> encounterIds
regPatientMainInfo.getRecords().stream().map(RegPatientMainInfoDto::getEncounterId).toList(); = regPatientMainInfo.getRecords().stream().map(RegPatientMainInfoDto::getEncounterId).toList();
// 查询条件 // 查询条件
QueryWrapper<EncounterAccountDto> wrapper = new QueryWrapper<>(); QueryWrapper<EncounterAccountDto> wrapper = new QueryWrapper<>();
@@ -129,9 +116,8 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
ChargeItemStatus.BILLABLE.getValue(), ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.BILLABLE.getValue(), ChargeItemStatus.BILLED.getValue(),
ChargeItemStatus.REFUNDED.getValue(), wrapper); ChargeItemStatus.REFUNDED.getValue(), wrapper);
// 转换为Map,key = encounter_id // 转换为Map,key = encounter_id
Map<Long, EncounterAccountDto> dtoMap = Map<Long, EncounterAccountDto> dtoMap
list.stream().collect(Collectors.toMap(EncounterAccountDto::getEncounterId, e -> e)); = list.stream().collect(Collectors.toMap(EncounterAccountDto::getEncounterId, e -> e));
>>>>>>> v1.3
regPatientMainInfo.getRecords().forEach(e -> { regPatientMainInfo.getRecords().forEach(e -> {
// 设置费用详情 // 设置费用详情
if (dtoMap.containsKey(e.getEncounterId())) { if (dtoMap.containsKey(e.getEncounterId())) {
@@ -183,22 +169,15 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
List<RegAdviceSaveDto> regAdviceSaveList = regAdviceSaveParam.getRegAdviceSaveList(); List<RegAdviceSaveDto> regAdviceSaveList = regAdviceSaveParam.getRegAdviceSaveList();
// 药品 // 药品
List<RegAdviceSaveDto> medicineList = regAdviceSaveList.stream() List<RegAdviceSaveDto> medicineList = regAdviceSaveList.stream()
<<<<<<< HEAD
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList()); .filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
// 耗材
// List<RegAdviceSaveDto> deviceList = regAdviceSaveList.stream()
// .filter(e -> ItemType.DEVICE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
=======
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
>>>>>>> v1.3
// 诊疗活动 // 诊疗活动
List<RegAdviceSaveDto> activityList = regAdviceSaveList.stream() List<RegAdviceSaveDto> activityList = regAdviceSaveList.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<RegAdviceSaveDto> medUpdateList = List<RegAdviceSaveDto> medUpdateList
medicineList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList()); = medicineList.stream().filter(e -> e.getRequestId() != null).collect(Collectors.toList());
// 编辑时,释放本身占用的库存发放 // 编辑时,释放本身占用的库存发放
for (RegAdviceSaveDto adviceSaveDto : medUpdateList) { for (RegAdviceSaveDto adviceSaveDto : medUpdateList) {
iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId()); iMedicationDispenseService.deleteMedicationDispense(adviceSaveDto.getRequestId());
@@ -222,8 +201,8 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
/** /**
* 处理药品请求 * 处理药品请求
*/ */
List<String> medRequestIdList = List<String> medRequestIdList
this.handMedication(medicineList, startTime, authoredTime, curDate, adviceOpType, organizationId, signCode); = this.handMedication(medicineList, startTime, authoredTime, curDate, adviceOpType, organizationId, signCode);
/** /**
* 处理诊疗项目请求 * 处理诊疗项目请求
@@ -244,24 +223,15 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
.in(ChargeItem::getServiceId, requestIds)); .in(ChargeItem::getServiceId, requestIds));
} }
<<<<<<< HEAD
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"住院医嘱"}));
=======
return R.ok(medRequestIdList, return R.ok(medRequestIdList,
MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"住院医嘱"})); MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"住院医嘱"}));
>>>>>>> v1.3
} }
/** /**
* 处理药品 * 处理药品
*/ */
<<<<<<< HEAD
private void handMedication(List<RegAdviceSaveDto> medicineList, Date startTime, Date authoredTime, Date curDate,
String adviceOpType, Long organizationId, String signCode) {
=======
private List<String> handMedication(List<RegAdviceSaveDto> medicineList, Date startTime, Date authoredTime, private List<String> handMedication(List<RegAdviceSaveDto> medicineList, Date startTime, Date authoredTime,
Date curDate, String adviceOpType, Long organizationId, String signCode) { Date curDate, String adviceOpType, Long organizationId, String signCode) {
>>>>>>> v1.3
// 当前登录账号的科室id // 当前登录账号的科室id
Long orgId = SecurityUtils.getLoginUser().getOrgId(); Long orgId = SecurityUtils.getLoginUser().getOrgId();
// 保存操作 // 保存操作
@@ -314,11 +284,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
if (is_save) { if (is_save) {
longMedicationRequest.setEffectiveDoseStart(startTime); // 医嘱开始时间 longMedicationRequest.setEffectiveDoseStart(startTime); // 医嘱开始时间
longMedicationRequest longMedicationRequest
<<<<<<< HEAD
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4)); .setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
=======
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
>>>>>>> v1.3
longMedicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 longMedicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
longMedicationRequest.setQuantity(regAdviceSaveDto.getQuantity()); // 请求数量 longMedicationRequest.setQuantity(regAdviceSaveDto.getQuantity()); // 请求数量
longMedicationRequest.setExecuteNum(regAdviceSaveDto.getExecuteNum()); // 执行次数 longMedicationRequest.setExecuteNum(regAdviceSaveDto.getExecuteNum()); // 执行次数
@@ -382,11 +348,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
if (is_save) { if (is_save) {
tempMedicationRequest.setEffectiveDoseStart(startTime); // 医嘱开始时间 tempMedicationRequest.setEffectiveDoseStart(startTime); // 医嘱开始时间
tempMedicationRequest tempMedicationRequest
<<<<<<< HEAD
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4)); .setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
=======
.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
>>>>>>> v1.3
tempMedicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 tempMedicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
tempMedicationRequest.setQuantity(regAdviceSaveDto.getQuantity()); // 请求数量 tempMedicationRequest.setQuantity(regAdviceSaveDto.getQuantity()); // 请求数量
tempMedicationRequest.setExecuteNum(regAdviceSaveDto.getExecuteNum()); // 执行次数 tempMedicationRequest.setExecuteNum(regAdviceSaveDto.getExecuteNum()); // 执行次数
@@ -414,13 +376,6 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
tempMedicationRequest.setInfusionFlag(regAdviceSaveDto.getInjectFlag()); // 输液标志 tempMedicationRequest.setInfusionFlag(regAdviceSaveDto.getInjectFlag()); // 输液标志
tempMedicationRequest.setSortNumber(regAdviceSaveDto.getSortNumber()); // 排序号 tempMedicationRequest.setSortNumber(regAdviceSaveDto.getSortNumber()); // 排序号
} }
<<<<<<< HEAD
iMedicationRequestService.saveOrUpdate(tempMedicationRequest);
if (is_save) {
// 处理药品发放
Long dispenseId = iMedicationDispenseService.handleMedicationDispense(tempMedicationRequest,
regAdviceSaveDto.getDbOpType());
=======
if (tempMedicationRequest.getId() == null) { if (tempMedicationRequest.getId() == null) {
firstTimeSave = true; firstTimeSave = true;
} }
@@ -433,7 +388,6 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
// 处理药品发放 // 处理药品发放
Long dispenseId = iMedicationDispenseService.handleMedicationDispense(tempMedicationRequest, Long dispenseId = iMedicationDispenseService.handleMedicationDispense(tempMedicationRequest,
regAdviceSaveDto.getDbOpType()); regAdviceSaveDto.getDbOpType());
>>>>>>> v1.3
// 保存药品费用项 // 保存药品费用项
chargeItem = new ChargeItem(); chargeItem = new ChargeItem();
@@ -543,7 +497,6 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
ChargeItem chargeItem; ChargeItem chargeItem;
// 新增 + 修改 (临时医嘱) // 新增 + 修改 (临时医嘱)
List<RegAdviceSaveDto> tempInsertOrUpdateList = activityList.stream().filter(e -> TherapyTimeType.TEMPORARY List<RegAdviceSaveDto> tempInsertOrUpdateList = activityList.stream().filter(e -> TherapyTimeType.TEMPORARY
.getValue().equals(e.getTherapyEnum()) .getValue().equals(e.getTherapyEnum())
&& (DbOpType.INSERT.getCode().equals(e.getDbOpType()) || DbOpType.UPDATE.getCode().equals(e.getDbOpType()))) && (DbOpType.INSERT.getCode().equals(e.getDbOpType()) || DbOpType.UPDATE.getCode().equals(e.getDbOpType())))
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -615,8 +568,8 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
// 第一次保存时,处理诊疗套餐的子项信息 // 第一次保存时,处理诊疗套餐的子项信息
if (regAdviceSaveDto.getRequestId() == null) { if (regAdviceSaveDto.getRequestId() == null) {
ActivityDefinition activityDefinition = ActivityDefinition activityDefinition
iActivityDefinitionService.getById(regAdviceSaveDto.getAdviceDefinitionId()); = iActivityDefinitionService.getById(regAdviceSaveDto.getAdviceDefinitionId());
String childrenJson = activityDefinition.getChildrenJson(); String childrenJson = activityDefinition.getChildrenJson();
if (childrenJson != null) { if (childrenJson != null) {
// 诊疗子项参数类 // 诊疗子项参数类
@@ -648,15 +601,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId(); Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
// 住院医嘱请求数据 // 住院医嘱请求数据
List<RegRequestBaseDto> regRequestBaseInfo = adviceManageAppMapper.getRegRequestBaseInfo(encounterId, null, List<RegRequestBaseDto> regRequestBaseInfo = adviceManageAppMapper.getRegRequestBaseInfo(encounterId, null,
<<<<<<< HEAD
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()); GenerateSource.DOCTOR_PRESCRIPTION.getValue());
=======
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.NO.getCode(),
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
>>>>>>> v1.3
// 根据 requestId 过滤重复医嘱信息 // 根据 requestId 过滤重复医嘱信息
List<RegRequestBaseDto> distinctList = regRequestBaseInfo.stream() List<RegRequestBaseDto> distinctList = regRequestBaseInfo.stream()
.collect(Collectors.toMap(RegRequestBaseDto::getRequestId, dto -> dto, (existing, replacement) -> existing // 如果key冲突保留已存在的第一条 .collect(Collectors.toMap(RegRequestBaseDto::getRequestId, dto -> dto, (existing, replacement) -> existing // 如果key冲突保留已存在的第一条
@@ -695,15 +642,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId(); Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
// 住院医嘱请求数据 // 住院医嘱请求数据
List<RegRequestBaseDto> regRequestBaseInfo = adviceManageAppMapper.getRegRequestBaseInfo(encounterId, patientId, List<RegRequestBaseDto> regRequestBaseInfo = adviceManageAppMapper.getRegRequestBaseInfo(encounterId, patientId,
<<<<<<< HEAD
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()); GenerateSource.DOCTOR_PRESCRIPTION.getValue());
=======
CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
CommonConstants.TableName.WOR_SERVICE_REQUEST, practitionerId, Whether.YES.getCode(),
GenerateSource.DOCTOR_PRESCRIPTION.getValue());
>>>>>>> v1.3
for (RegRequestBaseDto regRequestBaseDto : regRequestBaseInfo) { for (RegRequestBaseDto regRequestBaseDto : regRequestBaseInfo) {
// 请求状态 // 请求状态
regRequestBaseDto.setStatusEnum_enumText( regRequestBaseDto.setStatusEnum_enumText(
@@ -735,13 +676,13 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
// 药品 // 药品
List<AdviceBatchOpParam> medicineList = paramList.stream() List<AdviceBatchOpParam> medicineList = paramList.stream()
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList()); .filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
List<Long> medicineRequestIds = List<Long> medicineRequestIds
medicineList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList()); = medicineList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
// 诊疗 // 诊疗
List<AdviceBatchOpParam> activityList = paramList.stream() List<AdviceBatchOpParam> activityList = paramList.stream()
.filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList()); .filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
List<Long> activityRequestIds = List<Long> activityRequestIds
activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList()); = activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
// 查询已完成的药品请求 // 查询已完成的药品请求
List<MedicationRequest> medicineCompleteList = new ArrayList<>(); List<MedicationRequest> medicineCompleteList = new ArrayList<>();
if (!medicineRequestIds.isEmpty()) { if (!medicineRequestIds.isEmpty()) {
@@ -793,13 +734,13 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
// 药品 // 药品
List<AdviceBatchOpParam> medicineList = paramList.stream() List<AdviceBatchOpParam> medicineList = paramList.stream()
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList()); .filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
List<Long> medicineRequestIds = List<Long> medicineRequestIds
medicineList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList()); = medicineList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
// 诊疗 // 诊疗
List<AdviceBatchOpParam> activityList = paramList.stream() List<AdviceBatchOpParam> activityList = paramList.stream()
.filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList()); .filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
List<Long> activityRequestIds = List<Long> activityRequestIds
activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList()); = activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
if (!medicineRequestIds.isEmpty()) { if (!medicineRequestIds.isEmpty()) {
iMedicationRequestService.update(new LambdaUpdateWrapper<MedicationRequest>() iMedicationRequestService.update(new LambdaUpdateWrapper<MedicationRequest>()
.in(MedicationRequest::getId, medicineRequestIds).set(MedicationRequest::getEffectiveDoseEnd, date) .in(MedicationRequest::getId, medicineRequestIds).set(MedicationRequest::getEffectiveDoseEnd, date)

View File

@@ -67,13 +67,13 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
public NursingOrdersDto getNursingOrdersInfos() { public NursingOrdersDto getNursingOrdersInfos() {
NursingOrdersDto nursingOrdersDto = new NursingOrdersDto(); NursingOrdersDto nursingOrdersDto = new NursingOrdersDto();
// 类型为护理医嘱的编码集合 // 类型为护理医嘱的编码集合
List<String> categoryCodeList = List<String> categoryCodeList
Arrays.stream(NursingOrdersClass.values()).map(NursingOrdersClass::getCode).collect(Collectors.toList()); = Arrays.stream(NursingOrdersClass.values()).map(NursingOrdersClass::getCode).collect(Collectors.toList());
List<NursingOrdersDetailDto> nursingOrdersInfos = List<NursingOrdersDetailDto> nursingOrdersInfos
specialAdviceAppMapper.getNursingOrdersInfos(categoryCodeList); = specialAdviceAppMapper.getNursingOrdersInfos(categoryCodeList);
// 按categoryCode进行分组 // 按categoryCode进行分组
Map<String, List<NursingOrdersDetailDto>> groupedByCategory = Map<String, List<NursingOrdersDetailDto>> groupedByCategory
nursingOrdersInfos.stream().collect(Collectors.groupingBy(NursingOrdersDetailDto::getCategoryCode)); = nursingOrdersInfos.stream().collect(Collectors.groupingBy(NursingOrdersDetailDto::getCategoryCode));
// 根据不同的categoryCode赋值给对应的List // 根据不同的categoryCode赋值给对应的List
for (Map.Entry<String, List<NursingOrdersDetailDto>> entry : groupedByCategory.entrySet()) { for (Map.Entry<String, List<NursingOrdersDetailDto>> entry : groupedByCategory.entrySet()) {
String categoryCode = entry.getKey(); String categoryCode = entry.getKey();
@@ -133,8 +133,8 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
// 就诊诊断id // 就诊诊断id
Long encounterDiagnosisId = nursingOrdersSaveDto.getEncounterDiagnosisId(); Long encounterDiagnosisId = nursingOrdersSaveDto.getEncounterDiagnosisId();
// 护理医嘱详情保存集合 // 护理医嘱详情保存集合
List<NursingOrdersSaveDetailDto> nursingOrdersSaveDetailDtoList = List<NursingOrdersSaveDetailDto> nursingOrdersSaveDetailDtoList
nursingOrdersSaveDto.getNursingOrdersSaveDetailDtoList(); = nursingOrdersSaveDto.getNursingOrdersSaveDetailDtoList();
// 声明长期医嘱诊疗请求 // 声明长期医嘱诊疗请求
ServiceRequest longServiceRequest; ServiceRequest longServiceRequest;
// 已经存在的有效医嘱 // 已经存在的有效医嘱
@@ -247,11 +247,11 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
public NursingOrdersEncounterDto getEncounterNursingOrdersInfos(Long encounterId) { public NursingOrdersEncounterDto getEncounterNursingOrdersInfos(Long encounterId) {
NursingOrdersEncounterDto nursingOrdersEncounterDto = new NursingOrdersEncounterDto(); NursingOrdersEncounterDto nursingOrdersEncounterDto = new NursingOrdersEncounterDto();
// 类型为护理医嘱的枚举集合 // 类型为护理医嘱的枚举集合
List<Integer> categoryEnumList = List<Integer> categoryEnumList
Arrays.stream(NursingOrdersClass.values()).map(NursingOrdersClass::getValue).collect(Collectors.toList()); = Arrays.stream(NursingOrdersClass.values()).map(NursingOrdersClass::getValue).collect(Collectors.toList());
// 查询查询就诊护理医嘱 ; 为了排除可能存在的数据问题,每个categoryEnum按创建时间取最新的一条 // 查询查询就诊护理医嘱 ; 为了排除可能存在的数据问题,每个categoryEnum按创建时间取最新的一条
List<NursingOrdersEncounterDetailDto> encounterNursingOrdersInfos = List<NursingOrdersEncounterDetailDto> encounterNursingOrdersInfos
specialAdviceAppMapper.getEncounterNursingOrdersInfos(encounterId, RequestStatus.DRAFT.getValue(), = specialAdviceAppMapper.getEncounterNursingOrdersInfos(encounterId, RequestStatus.DRAFT.getValue(),
RequestStatus.ACTIVE.getValue(), RequestStatus.COMPLETED.getValue(), categoryEnumList); RequestStatus.ACTIVE.getValue(), RequestStatus.COMPLETED.getValue(), categoryEnumList);
if (!encounterNursingOrdersInfos.isEmpty()) { if (!encounterNursingOrdersInfos.isEmpty()) {
// 按categoryEnum进行分组 // 按categoryEnum进行分组
@@ -325,8 +325,8 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
return R.fail("请先在诊疗目录维护转科医嘱"); return R.fail("请先在诊疗目录维护转科医嘱");
} }
// 出院的医嘱定义id // 出院的医嘱定义id
Long leaveHospitalDefinitionId = Long leaveHospitalDefinitionId
iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.LEAVE_HOSPITAL); = iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.LEAVE_HOSPITAL);
if (leaveHospitalDefinitionId != null) { if (leaveHospitalDefinitionId != null) {
LambdaQueryWrapper<ServiceRequest> leaveLambdaQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ServiceRequest> leaveLambdaQuery = new LambdaQueryWrapper<>();
leaveLambdaQuery.eq(ServiceRequest::getEncounterId, encounterId) leaveLambdaQuery.eq(ServiceRequest::getEncounterId, encounterId)
@@ -415,8 +415,8 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
Long encounterDiagnosisId = leaveHospitalParam.getEncounterDiagnosisId(); Long encounterDiagnosisId = leaveHospitalParam.getEncounterDiagnosisId();
// 出院的医嘱定义id // 出院的医嘱定义id
Long transferOrganizationDefinitionId = Long transferOrganizationDefinitionId
iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.LEAVE_HOSPITAL); = iActivityDefinitionService.getAppointActivityDefinitionId(CommonConstants.BusinessName.LEAVE_HOSPITAL);
if (transferOrganizationDefinitionId == null) { if (transferOrganizationDefinitionId == null) {
return R.fail("请先在诊疗目录维护出院医嘱"); return R.fail("请先在诊疗目录维护出院医嘱");
} }
@@ -433,11 +433,7 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
// 出院的医嘱信息 // 出院的医嘱信息
AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(null, null, null, AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(null, null, null,
<<<<<<< HEAD
List.of(transferOrganizationDefinitionId), null, 1, 1, Whether.NO.getValue(), List.of(3)).getRecords()
=======
List.of(transferOrganizationDefinitionId), null, 1, 1, Whether.NO.getValue(), List.of(3), null).getRecords() List.of(transferOrganizationDefinitionId), null, 1, 1, Whether.NO.getValue(), List.of(3), null).getRecords()
>>>>>>> v1.3
.get(0); .get(0);
// 保存出院医嘱请求 // 保存出院医嘱请求
ServiceRequest serviceRequest = new ServiceRequest(); ServiceRequest serviceRequest = new ServiceRequest();
@@ -466,11 +462,8 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService {
orderProcess.setRequestId(serviceRequest.getId()); // 请求id orderProcess.setRequestId(serviceRequest.getId()); // 请求id
orderProcess.setRequestTableName(CommonConstants.TableName.WOR_SERVICE_REQUEST); // 请求表名 orderProcess.setRequestTableName(CommonConstants.TableName.WOR_SERVICE_REQUEST); // 请求表名
orderProcess.setOutWayCode(leaveHospitalParam.getOutWayCode()); // 出院方式 orderProcess.setOutWayCode(leaveHospitalParam.getOutWayCode()); // 出院方式
<<<<<<< HEAD
=======
orderProcess.setTargetLocationId(leaveHospitalParam.getOriginalOrganizationId()); // 原科室 orderProcess.setTargetLocationId(leaveHospitalParam.getOriginalOrganizationId()); // 原科室
orderProcess.setOriginalLocationId(leaveHospitalParam.getOriginalLocationId()); // 原病区 orderProcess.setOriginalLocationId(leaveHospitalParam.getOriginalLocationId()); // 原病区
>>>>>>> v1.3
iOrderProcessService.save(orderProcess); iOrderProcessService.save(orderProcess);
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"出院医嘱"})); return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"出院医嘱"}));

View File

@@ -18,11 +18,15 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class LeaveHospitalParam { public class LeaveHospitalParam {
/** 就诊id */ /**
* 就诊id
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long encounterId; private Long encounterId;
/** 患者 */ /**
* 患者
*/
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long patientId; private Long patientId;
@@ -51,8 +55,6 @@ public class LeaveHospitalParam {
private String outWayCode; private String outWayCode;
/** /**
<<<<<<< HEAD
=======
* 原科室 * 原科室
*/ */
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
@@ -65,7 +67,6 @@ public class LeaveHospitalParam {
private Long originalLocationId; private Long originalLocationId;
/** /**
>>>>>>> v1.3
* 理由 * 理由
*/ */
private String reasonText; private String reasonText;

View File

@@ -3,11 +3,6 @@
*/ */
package com.openhis.web.reportmanage.appservice; package com.openhis.web.reportmanage.appservice;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import com.core.common.core.domain.R;
=======
import java.time.LocalDateTime; import java.time.LocalDateTime;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -16,7 +11,6 @@ import javax.servlet.http.HttpServletResponse;
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.openhis.web.reportmanage.dto.*; import com.openhis.web.reportmanage.dto.*;
>>>>>>> v1.3
/** /**
* 报表 appService * 报表 appService
@@ -26,13 +20,8 @@ import com.openhis.web.reportmanage.dto.*;
*/ */
public interface IReportAppService { public interface IReportAppService {
<<<<<<< HEAD
/**例子
* 药剂科报表_常规报表:出库明细表
=======
/** /**
* 例子 药剂科报表_常规报表:出库明细表 * 例子 药剂科报表_常规报表:出库明细表
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -45,23 +34,16 @@ public interface IReportAppService {
/** /**
* 药剂科报表:患者明细主表 * 药剂科报表:患者明细主表
* *
<<<<<<< HEAD
=======
* @param patientMasterDetailsSearchParam 患者明细主表查询条件 * @param patientMasterDetailsSearchParam 患者明细主表查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
* @return 患者明细主表 * @return 患者明细主表
*/ */
<<<<<<< HEAD
R<?> getPatientMasterDetailPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
=======
Page<ReportPatientMasterDetailDto> getPatientMasterDetailPage( Page<ReportPatientMasterDetailDto> getPatientMasterDetailPage(
ReportPatientMasterDetailsSearchParam patientMasterDetailsSearchParam, Integer pageNo, Integer pageSize, ReportPatientMasterDetailsSearchParam patientMasterDetailsSearchParam, Integer pageNo, Integer pageSize,
String searchKey, HttpServletRequest request); String searchKey, HttpServletRequest request);
>>>>>>> v1.3
/** /**
* 药剂科报表:线下采购占比 * 药剂科报表:线下采购占比
@@ -83,32 +65,21 @@ public interface IReportAppService {
* @param request 请求数据 * @param request 请求数据
* @return 药品使用情况报表 * @return 药品使用情况报表
*/ */
<<<<<<< HEAD
R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
=======
R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey, LocalDateTime startTime, R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey, LocalDateTime startTime,
LocalDateTime endTime, HttpServletRequest request); LocalDateTime endTime, HttpServletRequest request);
>>>>>>> v1.3
/** /**
* 药剂科报表:患者明细 * 药剂科报表:患者明细
* *
<<<<<<< HEAD
=======
* @param patientDetailsSearchParam 患者明细查询条件 * @param patientDetailsSearchParam 患者明细查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
* @param request 请求数据 * @param request 请求数据
* @return 患者明细报表 * @return 患者明细报表
*/ */
<<<<<<< HEAD
R<?> getPatientDetailsPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
=======
Page<ReportPatientDetailsDto> getPatientDetailsPage(ReportPatientDetailsSearchParam patientDetailsSearchParam, Page<ReportPatientDetailsDto> getPatientDetailsPage(ReportPatientDetailsSearchParam patientDetailsSearchParam,
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request); Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
>>>>>>> v1.3
/** /**
* 药剂科报表_常规报表:药品费用增长率 * 药剂科报表_常规报表:药品费用增长率
@@ -135,37 +106,19 @@ public interface IReportAppService {
/** /**
* 药剂科报表:基本情况 * 药剂科报表:基本情况
* *
<<<<<<< HEAD
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param searchKey 模糊查询关键字
* @param request 请求数据
* @return 基本情况报表
*/
R<?> getBasicInformationDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
=======
* @param param 查询参数 * @param param 查询参数
* @return 基本情况报表 * @return 基本情况报表
*/ */
R<?> getBasicInformationDetails(ReportDetailsSearchParam param); R<?> getBasicInformationDetails(ReportDetailsSearchParam param);
>>>>>>> v1.3
/** /**
* 药剂科报表:药品出库情况 * 药剂科报表:药品出库情况
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
<<<<<<< HEAD
* @param searchKey 模糊查询关键字
* @param request 请求数据
* @return 药品出库情况报表
*/
R<?> getMedicationStockOutDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
=======
* @return 药品出库情况报表 * @return 药品出库情况报表
*/ */
R<?> getMedicationStockOutDetails(ReportDetailsSearchParam param, Integer pageNo, Integer pageSize); R<?> getMedicationStockOutDetails(ReportDetailsSearchParam param, Integer pageNo, Integer pageSize);
>>>>>>> v1.3
/** /**
* 药剂科报表:产品使用情况 * 药剂科报表:产品使用情况
@@ -189,9 +142,6 @@ public interface IReportAppService {
*/ */
R<?> getNonWinQtyRatio(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request); R<?> getNonWinQtyRatio(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
<<<<<<< HEAD
=======
/** /**
* 药剂科报表:药品入库情况 * 药剂科报表:药品入库情况
* *
@@ -263,5 +213,4 @@ public interface IReportAppService {
* @param response 响应数据 * @param response 响应数据
*/ */
void makeExcelFile(ReportDetailsSearchParam param, HttpServletResponse response, String code); void makeExcelFile(ReportDetailsSearchParam param, HttpServletResponse response, String code);
>>>>>>> v1.3
} }

View File

@@ -33,32 +33,6 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
<<<<<<< HEAD
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.utils.AgeCalculatorUtil;
import com.openhis.administration.domain.Practitioner;
import com.openhis.administration.service.IPractitionerService;
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.web.reportmanage.appservice.IChargeReportAppService;
import com.openhis.web.reportmanage.dto.ChargeReportInitDto;
import com.openhis.web.reportmanage.dto.ChargeReportPageDto;
import com.openhis.web.reportmanage.dto.ChargeReportSearchParam;
import com.openhis.web.reportmanage.mapper.ChargeReportMapper;
=======
>>>>>>> v1.3
/** /**
* 费用明细报表 impl * 费用明细报表 impl
* *
@@ -97,11 +71,7 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
.collect(Collectors.toList()); .collect(Collectors.toList());
initDto.setStatisticsTypeOptions(statisticsTypeOptions).setIssuerOptions(applicantList) initDto.setStatisticsTypeOptions(statisticsTypeOptions).setIssuerOptions(applicantList)
<<<<<<< HEAD
.setPayeeOptions(applicantList).setClinicalTypeOptions(clinicalTypeOptions); .setPayeeOptions(applicantList).setClinicalTypeOptions(clinicalTypeOptions);
=======
.setPayeeOptions(applicantList).setClinicalTypeOptions(clinicalTypeOptions);
>>>>>>> v1.3
return R.ok(initDto); return R.ok(initDto);
} }
@@ -129,13 +99,13 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
List<String> deviceCategoryCode = null; List<String> deviceCategoryCode = null;
if (chargeReportSearchParam.getClinicalType() != null if (chargeReportSearchParam.getClinicalType() != null
&& !chargeReportSearchParam.getClinicalType().trim().isEmpty()) { && !chargeReportSearchParam.getClinicalType().trim().isEmpty()) {
clinicalType = clinicalType
Arrays.stream((chargeReportSearchParam.getClinicalType()).split(",")).map(Integer::valueOf).toList(); = Arrays.stream((chargeReportSearchParam.getClinicalType()).split(",")).map(Integer::valueOf).toList();
} }
if (chargeReportSearchParam.getMedicationCategoryCode() != null if (chargeReportSearchParam.getMedicationCategoryCode() != null
&& !chargeReportSearchParam.getMedicationCategoryCode().trim().isEmpty()) { && !chargeReportSearchParam.getMedicationCategoryCode().trim().isEmpty()) {
medicationCategoryCode = medicationCategoryCode
Arrays.stream((chargeReportSearchParam.getMedicationCategoryCode()).split(",")).toList(); = Arrays.stream((chargeReportSearchParam.getMedicationCategoryCode()).split(",")).toList();
} }
if (chargeReportSearchParam.getDeviceCategoryCode() != null if (chargeReportSearchParam.getDeviceCategoryCode() != null
&& !chargeReportSearchParam.getDeviceCategoryCode().trim().isEmpty()) { && !chargeReportSearchParam.getDeviceCategoryCode().trim().isEmpty()) {
@@ -143,8 +113,8 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
} }
if (chargeReportSearchParam.getActivityCategoryCode() != null if (chargeReportSearchParam.getActivityCategoryCode() != null
&& !chargeReportSearchParam.getActivityCategoryCode().trim().isEmpty()) { && !chargeReportSearchParam.getActivityCategoryCode().trim().isEmpty()) {
activityCategoryCode = activityCategoryCode
Arrays.stream((chargeReportSearchParam.getActivityCategoryCode()).split(",")).toList(); = Arrays.stream((chargeReportSearchParam.getActivityCategoryCode()).split(",")).toList();
} }
// 避开QueryWrapper // 避开QueryWrapper
chargeReportSearchParam.setClinicalType(null); chargeReportSearchParam.setClinicalType(null);
@@ -152,22 +122,12 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
chargeReportSearchParam.setDeviceCategoryCode(null); chargeReportSearchParam.setDeviceCategoryCode(null);
chargeReportSearchParam.setActivityCategoryCode(null); chargeReportSearchParam.setActivityCategoryCode(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<ChargeReportSearchParam> queryWrapper = QueryWrapper<ChargeReportSearchParam> queryWrapper
<<<<<<< HEAD = HisQueryUtils.buildQueryWrapper(chargeReportSearchParam, searchKey,
HisQueryUtils.buildQueryWrapper(chargeReportSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.YbCode, CommonConstants.FieldName.BusNo, new HashSet<>(Arrays.asList(CommonConstants.FieldName.YbCode, CommonConstants.FieldName.BusNo,
CommonConstants.FieldName.Name, CommonConstants.FieldName.ClinicalName, CommonConstants.FieldName.Name, CommonConstants.FieldName.ClinicalName,
CommonConstants.FieldName.ClinicalNo)), CommonConstants.FieldName.ClinicalNo)),
request); request);
queryWrapper.orderByDesc(CommonConstants.FieldName.BusNo).orderByAsc(CommonConstants.FieldName.ChargeId)
.orderByAsc(CommonConstants.FieldName.ChargeTime);
=======
HisQueryUtils.buildQueryWrapper(chargeReportSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.YbCode, CommonConstants.FieldName.BusNo,
CommonConstants.FieldName.Name, CommonConstants.FieldName.ClinicalName,
CommonConstants.FieldName.ClinicalNo)),
request);
>>>>>>> v1.3
// 最终返回结果 // 最终返回结果
Page<ChargeReportPageDto> chargeReportList; Page<ChargeReportPageDto> chargeReportList;
@@ -175,17 +135,6 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
if (Objects.equals(statisticsType, StatisticsType.OUTPATIENT_REVENUE.getCode())) { if (Objects.equals(statisticsType, StatisticsType.OUTPATIENT_REVENUE.getCode())) {
// 门诊整体收入明细 // 门诊整体收入明细
chargeReportList = chargeReportMapper.selectRevenueReportPage(new Page<>(pageNo, pageSize), queryWrapper, chargeReportList = chargeReportMapper.selectRevenueReportPage(new Page<>(pageNo, pageSize), queryWrapper,
<<<<<<< HEAD
PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(),
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 2);
} else if (Objects.equals(statisticsType, StatisticsType.OUTPATIENT_YB_REVENUE.getCode())) {
// 门诊医保收入明细
chargeReportList = chargeReportMapper.selectRevenueReportPage(new Page<>(pageNo, pageSize), queryWrapper,
PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(),
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 1);
=======
PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(), PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(),
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(), ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 2, clinicalType, ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 2, clinicalType,
@@ -197,22 +146,10 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(), ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 1, clinicalType, ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 1, clinicalType,
activityCategoryCode, deviceCategoryCode, medicationCategoryCode); activityCategoryCode, deviceCategoryCode, medicationCategoryCode);
>>>>>>> v1.3
} else if (Objects.equals(statisticsType, StatisticsType.OUTPATIENT_SELF_REVENUE.getCode())) { } else if (Objects.equals(statisticsType, StatisticsType.OUTPATIENT_SELF_REVENUE.getCode())) {
// 门诊自费收入明细 // 门诊自费收入明细
chargeReportList = chargeReportMapper.selectRevenueReportPage(new Page<>(pageNo, pageSize), queryWrapper, chargeReportList = chargeReportMapper.selectRevenueReportPage(new Page<>(pageNo, pageSize), queryWrapper,
<<<<<<< HEAD
PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(),
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 0);
} else if (Objects.equals(statisticsType, StatisticsType.OUTPATIENT_REFUND.getCode())) {
// 门诊退费明细
chargeReportList = chargeReportMapper.selectRevenueReportPage(new Page<>(pageNo, pageSize), queryWrapper,
PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(),
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 3);
=======
PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(), PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(),
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(), ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 0, clinicalType, ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 0, clinicalType,
@@ -224,7 +161,6 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(), ChargeItemContext.MEDICATION.getValue(), ChargeItemContext.DEVICE.getValue(),
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 3, clinicalType, ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.REGISTER.getValue(), 3, clinicalType,
activityCategoryCode, deviceCategoryCode, medicationCategoryCode); activityCategoryCode, deviceCategoryCode, medicationCategoryCode);
>>>>>>> v1.3
} else { } else {
return R.fail(PromptMsgConstant.Report.M00002); return R.fail(PromptMsgConstant.Report.M00002);
@@ -244,17 +180,10 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
List<ChargeReportPageDto> content = chargeReportList.getRecords(); List<ChargeReportPageDto> content = chargeReportList.getRecords();
// 按 busNo 分组,并合计 totalPrice // 按 busNo 分组,并合计 totalPrice
Map<String, BigDecimal> subtotalAmount = content.stream() Map<String, BigDecimal> subtotalAmount = content.stream()
<<<<<<< HEAD
// 过滤掉 busNo 为 null 的元素,否则会报错但实际上不会出现这个情况 element cannot be mapped to a null key // 过滤掉 busNo 为 null 的元素,否则会报错但实际上不会出现这个情况 element cannot be mapped to a null key
.filter(dto -> dto.getBusNo() != null) .filter(dto -> dto.getBusNo() != null)
.collect(Collectors.groupingBy(ChargeReportPageDto::getBusNo, Collectors.reducing(BigDecimal.ZERO, .collect(Collectors.groupingBy(ChargeReportPageDto::getBusNo, Collectors.reducing(BigDecimal.ZERO,
dto -> dto.getTotalPrice() != null ? dto.getTotalPrice() : BigDecimal.ZERO, BigDecimal::add))); dto -> dto.getTotalPrice() != null ? dto.getTotalPrice() : BigDecimal.ZERO, BigDecimal::add)));
=======
// 过滤掉 busNo 为 null 的元素,否则会报错但实际上不会出现这个情况 element cannot be mapped to a null key
.filter(dto -> dto.getBusNo() != null)
.collect(Collectors.groupingBy(ChargeReportPageDto::getBusNo, Collectors.reducing(BigDecimal.ZERO,
dto -> dto.getTotalPrice() != null ? dto.getTotalPrice() : BigDecimal.ZERO, BigDecimal::add)));
>>>>>>> v1.3
// 更新每条数据的 Price 字段 // 更新每条数据的 Price 字段
for (ChargeReportPageDto dto : content) { for (ChargeReportPageDto dto : content) {
@@ -315,13 +244,13 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
List<String> deviceCategoryCode = null; List<String> deviceCategoryCode = null;
if (chargeReportSearchParam.getClinicalType() != null if (chargeReportSearchParam.getClinicalType() != null
&& !chargeReportSearchParam.getClinicalType().trim().isEmpty()) { && !chargeReportSearchParam.getClinicalType().trim().isEmpty()) {
clinicalType = clinicalType
Arrays.stream((chargeReportSearchParam.getClinicalType()).split(",")).map(Integer::valueOf).toList(); = Arrays.stream((chargeReportSearchParam.getClinicalType()).split(",")).map(Integer::valueOf).toList();
} }
if (chargeReportSearchParam.getMedicationCategoryCode() != null if (chargeReportSearchParam.getMedicationCategoryCode() != null
&& !chargeReportSearchParam.getMedicationCategoryCode().trim().isEmpty()) { && !chargeReportSearchParam.getMedicationCategoryCode().trim().isEmpty()) {
medicationCategoryCode = medicationCategoryCode
Arrays.stream((chargeReportSearchParam.getMedicationCategoryCode()).split(",")).toList(); = Arrays.stream((chargeReportSearchParam.getMedicationCategoryCode()).split(",")).toList();
} }
if (chargeReportSearchParam.getDeviceCategoryCode() != null if (chargeReportSearchParam.getDeviceCategoryCode() != null
&& !chargeReportSearchParam.getDeviceCategoryCode().trim().isEmpty()) { && !chargeReportSearchParam.getDeviceCategoryCode().trim().isEmpty()) {
@@ -329,8 +258,8 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
} }
if (chargeReportSearchParam.getActivityCategoryCode() != null if (chargeReportSearchParam.getActivityCategoryCode() != null
&& !chargeReportSearchParam.getActivityCategoryCode().trim().isEmpty()) { && !chargeReportSearchParam.getActivityCategoryCode().trim().isEmpty()) {
activityCategoryCode = activityCategoryCode
Arrays.stream((chargeReportSearchParam.getActivityCategoryCode()).split(",")).toList(); = Arrays.stream((chargeReportSearchParam.getActivityCategoryCode()).split(",")).toList();
} }
// 避开QueryWrapper // 避开QueryWrapper
chargeReportSearchParam.setClinicalType(null); chargeReportSearchParam.setClinicalType(null);
@@ -338,8 +267,8 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
chargeReportSearchParam.setDeviceCategoryCode(null); chargeReportSearchParam.setDeviceCategoryCode(null);
chargeReportSearchParam.setActivityCategoryCode(null); chargeReportSearchParam.setActivityCategoryCode(null);
// 构建查询条件 // 构建查询条件
QueryWrapper<ChargeReportSearchParam> queryWrapper = QueryWrapper<ChargeReportSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(chargeReportSearchParam, searchKey, = HisQueryUtils.buildQueryWrapper(chargeReportSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.YbCode, CommonConstants.FieldName.BusNo, new HashSet<>(Arrays.asList(CommonConstants.FieldName.YbCode, CommonConstants.FieldName.BusNo,
CommonConstants.FieldName.Name, CommonConstants.FieldName.ClinicalName, CommonConstants.FieldName.Name, CommonConstants.FieldName.ClinicalName,
CommonConstants.FieldName.ClinicalNo)), CommonConstants.FieldName.ClinicalNo)),
@@ -435,6 +364,7 @@ public class ChargeReportAppServiceImpl implements IChargeReportAppService {
Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
return R.ok(chargeReportMapper.selectOrgWorkload(startTime, endTime, CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION, PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(), ConditionCode.LOT_NUMBER_COST.getValue().toString(), tenantId)); return R.ok(chargeReportMapper.selectOrgWorkload(startTime, endTime, CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION, PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUND_ALL.getValue(), ConditionCode.LOT_NUMBER_COST.getValue().toString(), tenantId));
} }
/** /**
* 医生工作量统计 * 医生工作量统计
* *

View File

@@ -3,14 +3,6 @@
*/ */
package com.openhis.web.reportmanage.appservice.impl; package com.openhis.web.reportmanage.appservice.impl;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
import com.core.common.core.domain.R;
import com.openhis.web.reportmanage.appservice.IReportAppService;
=======
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
@@ -46,7 +38,6 @@ import com.openhis.financial.service.IPaymentRecStaticService;
import com.openhis.web.reportmanage.appservice.IReportAppService; import com.openhis.web.reportmanage.appservice.IReportAppService;
import com.openhis.web.reportmanage.dto.*; import com.openhis.web.reportmanage.dto.*;
import com.openhis.web.reportmanage.mapper.ReportMapper; import com.openhis.web.reportmanage.mapper.ReportMapper;
>>>>>>> v1.3
/** /**
* 报表 impl * 报表 impl
@@ -57,10 +48,6 @@ import com.openhis.web.reportmanage.mapper.ReportMapper;
@Service @Service
public class ReportAppServiceImpl implements IReportAppService { public class ReportAppServiceImpl implements IReportAppService {
<<<<<<< HEAD
/**例子
* 药剂科报表_常规报表:出库明细表
=======
@Autowired @Autowired
ReportMapper reportMapper; ReportMapper reportMapper;
@Resource @Resource
@@ -68,7 +55,6 @@ public class ReportAppServiceImpl implements IReportAppService {
/** /**
* 例子 药剂科报表_常规报表:出库明细表 * 例子 药剂科报表_常规报表:出库明细表
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -84,10 +70,7 @@ public class ReportAppServiceImpl implements IReportAppService {
/** /**
* 药剂科报表:患者明细主表 * 药剂科报表:患者明细主表
* *
<<<<<<< HEAD
=======
* @param patientMasterDetailsSearchParam 患者明细主表查询条件 * @param patientMasterDetailsSearchParam 患者明细主表查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
@@ -95,23 +78,18 @@ public class ReportAppServiceImpl implements IReportAppService {
* @return 患者明细主表 * @return 患者明细主表
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getPatientMasterDetailPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
return null;
=======
public Page<ReportPatientMasterDetailDto> getPatientMasterDetailPage( public Page<ReportPatientMasterDetailDto> getPatientMasterDetailPage(
ReportPatientMasterDetailsSearchParam patientMasterDetailsSearchParam, Integer pageNo, Integer pageSize, ReportPatientMasterDetailsSearchParam patientMasterDetailsSearchParam, Integer pageNo, Integer pageSize,
String searchKey, HttpServletRequest request) { String searchKey, HttpServletRequest request) {
// 构建查询条件 // 构建查询条件
QueryWrapper<ReportPatientMasterDetailsSearchParam> queryWrapper = QueryWrapper<ReportPatientMasterDetailsSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(patientMasterDetailsSearchParam, searchKey, = HisQueryUtils.buildQueryWrapper(patientMasterDetailsSearchParam, searchKey,
new HashSet<>(Arrays.asList("encounter_bus_no", "patient_name")), request); new HashSet<>(Arrays.asList("encounter_bus_no", "patient_name")), request);
// 查询挂号明细分页列表 // 查询挂号明细分页列表
Page<ReportPatientMasterDetailDto> patientMasterDetailsPage = reportMapper Page<ReportPatientMasterDetailDto> patientMasterDetailsPage = reportMapper
.selectPatientMasterDetailPage(new Page<>(pageNo, pageSize), queryWrapper, EncounterClass.IMP.getValue()); .selectPatientMasterDetailPage(new Page<>(pageNo, pageSize), queryWrapper, EncounterClass.IMP.getValue());
return patientMasterDetailsPage; return patientMasterDetailsPage;
>>>>>>> v1.3
} }
/** /**
@@ -128,10 +106,7 @@ public class ReportAppServiceImpl implements IReportAppService {
HttpServletRequest request) { HttpServletRequest request) {
return null; return null;
} }
<<<<<<< HEAD
=======
>>>>>>> v1.3
/** /**
* 药剂科报表:药品使用情况 * 药剂科报表:药品使用情况
* *
@@ -142,11 +117,6 @@ public class ReportAppServiceImpl implements IReportAppService {
* @return 药品使用情况报表 * @return 药品使用情况报表
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey,
HttpServletRequest request) {
return null;
=======
public R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey, LocalDateTime startTime, public R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey, LocalDateTime startTime,
LocalDateTime endTime, HttpServletRequest request) { LocalDateTime endTime, HttpServletRequest request) {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -159,16 +129,12 @@ public class ReportAppServiceImpl implements IReportAppService {
item.setOrgName(orgName); item.setOrgName(orgName);
}); });
return R.ok(medicationUsagePage); return R.ok(medicationUsagePage);
>>>>>>> v1.3
} }
/** /**
* 药剂科报表:患者明细 * 药剂科报表:患者明细
* *
<<<<<<< HEAD
=======
* @param patientDetailsSearchParam 患者明细查询条件 * @param patientDetailsSearchParam 患者明细查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
@@ -176,25 +142,19 @@ public class ReportAppServiceImpl implements IReportAppService {
* @return 患者明细报表 * @return 患者明细报表
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getPatientDetailsPage(Integer pageNo, Integer pageSize, String searchKey,
HttpServletRequest request) {
return null;
=======
public Page<ReportPatientDetailsDto> getPatientDetailsPage( public Page<ReportPatientDetailsDto> getPatientDetailsPage(
ReportPatientDetailsSearchParam patientDetailsSearchParam, Integer pageNo, Integer pageSize, String searchKey, ReportPatientDetailsSearchParam patientDetailsSearchParam, Integer pageNo, Integer pageSize, String searchKey,
HttpServletRequest request) { HttpServletRequest request) {
// 构建查询条件 // 构建查询条件
QueryWrapper<ReportPatientDetailsSearchParam> queryWrapper = QueryWrapper<ReportPatientDetailsSearchParam> queryWrapper
HisQueryUtils.buildQueryWrapper(patientDetailsSearchParam, searchKey, = HisQueryUtils.buildQueryWrapper(patientDetailsSearchParam, searchKey,
new HashSet<>(Arrays.asList("encounter_bus_no", "med_name", "manufacturer_text")), request); new HashSet<>(Arrays.asList("encounter_bus_no", "med_name", "manufacturer_text")), request);
// 查询挂号明细分页列表 // 查询挂号明细分页列表
Page<ReportPatientDetailsDto> patientDetailsPage = reportMapper.selectPatientDetailsPage( Page<ReportPatientDetailsDto> patientDetailsPage = reportMapper.selectPatientDetailsPage(
new Page<>(pageNo, pageSize), queryWrapper, CommonConstants.TableName.MED_MEDICATION_REQUEST); new Page<>(pageNo, pageSize), queryWrapper, CommonConstants.TableName.MED_MEDICATION_REQUEST);
return patientDetailsPage; return patientDetailsPage;
>>>>>>> v1.3
} }
/** /**
@@ -207,12 +167,8 @@ public class ReportAppServiceImpl implements IReportAppService {
* @return 药品费用增长率 * @return 药品费用增长率
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getDrugExpensesGrowthRate(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
=======
public R<?> getDrugExpensesGrowthRate(Integer pageNo, Integer pageSize, String searchKey, public R<?> getDrugExpensesGrowthRate(Integer pageNo, Integer pageSize, String searchKey,
HttpServletRequest request) { HttpServletRequest request) {
>>>>>>> v1.3
return null; return null;
} }
@@ -226,29 +182,12 @@ public class ReportAppServiceImpl implements IReportAppService {
* @return 30天回款率 * @return 30天回款率
*/ */
@Override @Override
<<<<<<< HEAD
public R<?> getThirtyDayCollectionRate(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
=======
public R<?> getThirtyDayCollectionRate(Integer pageNo, Integer pageSize, String searchKey, public R<?> getThirtyDayCollectionRate(Integer pageNo, Integer pageSize, String searchKey,
HttpServletRequest request) { HttpServletRequest request) {
>>>>>>> v1.3
return null; return null;
} }
/** /**
<<<<<<< HEAD
* 药剂科报表:基本情况
*
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param searchKey 模糊查询关键字
* @param request 请求数据
* @return 基本情况报表
*/
@Override
public R<?> getBasicInformationDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
return null;
=======
* 获取医疗机构代码、组织机构名称 * 获取医疗机构代码、组织机构名称
* *
* @return 医疗机构代码[0]、组织机构名称[1] * @return 医疗机构代码[0]、组织机构名称[1]
@@ -295,7 +234,6 @@ public class ReportAppServiceImpl implements IReportAppService {
return R.ok(List.of(dto)); return R.ok(List.of(dto));
} }
return R.ok(); return R.ok();
>>>>>>> v1.3
} }
/** /**
@@ -303,15 +241,6 @@ public class ReportAppServiceImpl implements IReportAppService {
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
<<<<<<< HEAD
* @param searchKey 模糊查询关键字
* @param request 请求数据
* @return 药品出库情况报表
*/
@Override
public R<?> getMedicationStockOutDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request) {
return null;
=======
* @return 药品出库情况报表 * @return 药品出库情况报表
*/ */
@Override @Override
@@ -343,7 +272,6 @@ public class ReportAppServiceImpl implements IReportAppService {
}); });
} }
return R.ok(detailsPage); return R.ok(detailsPage);
>>>>>>> v1.3
} }
/** /**
@@ -374,9 +302,6 @@ public class ReportAppServiceImpl implements IReportAppService {
return null; return null;
} }
<<<<<<< HEAD
=======
/** /**
* 药剂科报表:药品入库情况 * 药剂科报表:药品入库情况
* *
@@ -493,8 +418,8 @@ public class ReportAppServiceImpl implements IReportAppService {
List<ReportMedicationInboundDetailsDto> dtoList = details.getData().getRecords(); List<ReportMedicationInboundDetailsDto> dtoList = details.getData().getRecords();
if (!dtoList.isEmpty()) { if (!dtoList.isEmpty()) {
try { try {
NewExcelUtil<ReportMedicationInboundDetailsDto> util = NewExcelUtil<ReportMedicationInboundDetailsDto> util
new NewExcelUtil<>(ReportMedicationInboundDetailsDto.class); = new NewExcelUtil<>(ReportMedicationInboundDetailsDto.class);
util.exportExcel(response, dtoList, CommonConstants.SheetName.DRUG_TRANSFER_DETAILS); util.exportExcel(response, dtoList, CommonConstants.SheetName.DRUG_TRANSFER_DETAILS);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
@@ -513,13 +438,12 @@ public class ReportAppServiceImpl implements IReportAppService {
List<ReportBasicInformationDetailsDto> dtoList = (List<ReportBasicInformationDetailsDto>) details.getData(); List<ReportBasicInformationDetailsDto> dtoList = (List<ReportBasicInformationDetailsDto>) details.getData();
if (dtoList != null && !dtoList.isEmpty()) { if (dtoList != null && !dtoList.isEmpty()) {
try { try {
NewExcelUtil<ReportBasicInformationDetailsDto> util = NewExcelUtil<ReportBasicInformationDetailsDto> util
new NewExcelUtil<>(ReportBasicInformationDetailsDto.class); = new NewExcelUtil<>(ReportBasicInformationDetailsDto.class);
util.exportExcel(response, dtoList, CommonConstants.SheetName.ANNUAL_TOTAL_DRUG_REVENUE); util.exportExcel(response, dtoList, CommonConstants.SheetName.ANNUAL_TOTAL_DRUG_REVENUE);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
} }
>>>>>>> v1.3
} }

View File

@@ -3,18 +3,6 @@
*/ */
package com.openhis.web.reportmanage.controller; package com.openhis.web.reportmanage.controller;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.core.common.core.domain.R;
import com.openhis.web.reportmanage.appservice.IReportAppService;
=======
import java.time.LocalDateTime; import java.time.LocalDateTime;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -30,7 +18,6 @@ import com.openhis.web.reportmanage.dto.ReportDetailsSearchParam;
import com.openhis.web.reportmanage.dto.ReportPatientDetailsSearchParam; import com.openhis.web.reportmanage.dto.ReportPatientDetailsSearchParam;
import com.openhis.web.reportmanage.dto.ReportPatientMasterDetailsSearchParam; import com.openhis.web.reportmanage.dto.ReportPatientMasterDetailsSearchParam;
import com.openhis.web.reportmanage.dto.ReportPhysicianWorkloadSearchParam; import com.openhis.web.reportmanage.dto.ReportPhysicianWorkloadSearchParam;
>>>>>>> v1.3
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -48,14 +35,8 @@ public class ReportController {
@Autowired @Autowired
private IReportAppService reportAppService; private IReportAppService reportAppService;
<<<<<<< HEAD
/**例子Dto例子参考ReportStockOutDetailDto
* 药剂科报表_常规报表:出库明细表
=======
/** /**
* 例子Dto例子参考ReportStockOutDetailDto 药剂科报表_常规报表:出库明细表 * 例子Dto例子参考ReportStockOutDetailDto 药剂科报表_常规报表:出库明细表
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -67,14 +48,6 @@ public class ReportController {
public R<?> getStockOutDetailPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getStockOutDetailPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
<<<<<<< HEAD
return reportAppService.getStockOutDetailPage(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportPatientMasterDetailDto
* 药剂科报表:患者明细主表
*
=======
return reportAppService.getStockOutDetailPage(pageNo, pageSize, searchKey, request); return reportAppService.getStockOutDetailPage(pageNo, pageSize, searchKey, request);
} }
@@ -82,7 +55,6 @@ public class ReportController {
* Dto参考ReportPatientMasterDetailDto 药剂科报表:患者明细主表 * Dto参考ReportPatientMasterDetailDto 药剂科报表:患者明细主表
* *
* @param patientMasterDetailsSearchParam 患者明细主表查询条件 * @param patientMasterDetailsSearchParam 患者明细主表查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
@@ -90,16 +62,6 @@ public class ReportController {
* @return 患者明细主报表 * @return 患者明细主报表
*/ */
@GetMapping(value = "/patient-master-detail") @GetMapping(value = "/patient-master-detail")
<<<<<<< HEAD
public R<?> getPatientMasterDetailPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return reportAppService.getPatientMasterDetailPage(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportOfflinePurchaseRatioDto
* 药剂科报表:线下采购占比
=======
public R<?> getPatientMasterDetailPage(ReportPatientMasterDetailsSearchParam patientMasterDetailsSearchParam, public R<?> getPatientMasterDetailPage(ReportPatientMasterDetailsSearchParam patientMasterDetailsSearchParam,
@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,
@@ -110,7 +72,6 @@ public class ReportController {
/** /**
* Dto参考ReportOfflinePurchaseRatioDto 药剂科报表:线下采购占比 * Dto参考ReportOfflinePurchaseRatioDto 药剂科报表:线下采购占比
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -122,19 +83,11 @@ public class ReportController {
public R<?> getOfflinePurchaseRatioPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getOfflinePurchaseRatioPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
<<<<<<< HEAD
return reportAppService.getOfflinePurchaseRatioPage(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportMedicationUsageDto
* 药剂科报表:药品使用情况
=======
return reportAppService.getOfflinePurchaseRatioPage(pageNo, pageSize, searchKey, request); return reportAppService.getOfflinePurchaseRatioPage(pageNo, pageSize, searchKey, request);
} }
/** /**
* Dto参考ReportMedicationUsageDto 药剂科报表:药品使用情况 * Dto参考ReportMedicationUsageDto 药剂科报表:药品使用情况
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -145,15 +98,6 @@ public class ReportController {
@GetMapping(value = "/medication-usage") @GetMapping(value = "/medication-usage")
public R<?> getMedicationUsagePage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getMedicationUsagePage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
<<<<<<< HEAD
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return reportAppService.getMedicationUsagePage(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportPatientDetailsDto
* 药剂科报表:患者明细
*
=======
@RequestParam(name = "searchKey", required = false) String searchKey, @RequestParam(name = "searchKey", required = false) String searchKey,
@RequestParam(name = "startTime", @RequestParam(name = "startTime",
required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime,
@@ -167,7 +111,6 @@ public class ReportController {
* Dto参考ReportPatientDetailsDto 药剂科报表:患者明细 * Dto参考ReportPatientDetailsDto 药剂科报表:患者明细
* *
* @param patientDetailsSearchParam 患者明细查询条件 * @param patientDetailsSearchParam 患者明细查询条件
>>>>>>> v1.3
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @param searchKey 模糊查询关键字 * @param searchKey 模糊查询关键字
@@ -175,16 +118,6 @@ public class ReportController {
* @return 患者明细报表 * @return 患者明细报表
*/ */
@GetMapping(value = "/patient-details") @GetMapping(value = "/patient-details")
<<<<<<< HEAD
public R<?> getPatientDetailsPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return reportAppService.getPatientDetailsPage(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportDrugCostGrowthDto
* 药剂科报表:药品费用增长率
=======
public R<?> getPatientDetailsPage(ReportPatientDetailsSearchParam patientDetailsSearchParam, public R<?> getPatientDetailsPage(ReportPatientDetailsSearchParam patientDetailsSearchParam,
@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,
@@ -195,7 +128,6 @@ public class ReportController {
/** /**
* Dto参考ReportDrugCostGrowthDto 药剂科报表:药品费用增长率 * Dto参考ReportDrugCostGrowthDto 药剂科报表:药品费用增长率
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -207,19 +139,11 @@ public class ReportController {
public R<?> getDrugExpensesGrowthRate(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getDrugExpensesGrowthRate(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
<<<<<<< HEAD
return reportAppService.getDrugExpensesGrowthRate(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportThirtyDayCollectionRateDto
* 药剂科报表:30天回款率
=======
return reportAppService.getDrugExpensesGrowthRate(pageNo, pageSize, searchKey, request); return reportAppService.getDrugExpensesGrowthRate(pageNo, pageSize, searchKey, request);
} }
/** /**
* Dto参考ReportThirtyDayCollectionRateDto 药剂科报表:30天回款率 * Dto参考ReportThirtyDayCollectionRateDto 药剂科报表:30天回款率
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -231,45 +155,6 @@ public class ReportController {
public R<?> getThirtyDayCollectionRate(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getThirtyDayCollectionRate(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
<<<<<<< HEAD
return reportAppService.getThirtyDayCollectionRate(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportBasicInformationDetailsDto
* 药剂科报表:基本情况报表
*
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param searchKey 模糊查询关键字
* @param request 请求数据
* @return 基本情况报表
*/
@GetMapping(value = "/basic-information-details")
public R<?> getBasicInformationDetails(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return reportAppService.getBasicInformationDetails(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportMedicationStockOutDetailsDto
* 药剂科报表:药品出库情况
*
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param searchKey 模糊查询关键字
* @param request 请求数据
* @return 药品出库情况报表
*/
@GetMapping(value = "/medication-stock-out-details")
public R<?> getMedicationStockOutDetails(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return reportAppService.getMedicationStockOutDetails(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportProductUsageDto
* 药剂科报表:产品使用情况
=======
return reportAppService.getThirtyDayCollectionRate(pageNo, pageSize, searchKey, request); return reportAppService.getThirtyDayCollectionRate(pageNo, pageSize, searchKey, request);
} }
@@ -311,7 +196,6 @@ public class ReportController {
/** /**
* Dto参考ReportProductUsageDto 药剂科报表:产品使用情况 * Dto参考ReportProductUsageDto 药剂科报表:产品使用情况
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -323,19 +207,11 @@ public class ReportController {
public R<?> getProductUsageDetails(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getProductUsageDetails(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
<<<<<<< HEAD
return reportAppService.getProductUsageDetails(pageNo,pageSize,searchKey,request);
}
/**Dto参考ReportNonWinQtyRatioDto
* 药剂科报表:非中选产品采购量占比
=======
return reportAppService.getProductUsageDetails(pageNo, pageSize, searchKey, request); return reportAppService.getProductUsageDetails(pageNo, pageSize, searchKey, request);
} }
/** /**
* Dto参考ReportNonWinQtyRatioDto 药剂科报表:非中选产品采购量占比 * Dto参考ReportNonWinQtyRatioDto 药剂科报表:非中选产品采购量占比
>>>>>>> v1.3
* *
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
@@ -347,9 +223,6 @@ public class ReportController {
public R<?> getNonWinQtyRatio(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, public R<?> getNonWinQtyRatio(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) { @RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
<<<<<<< HEAD
return reportAppService.getNonWinQtyRatio(pageNo,pageSize,searchKey,request);
=======
return reportAppService.getNonWinQtyRatio(pageNo, pageSize, searchKey, request); return reportAppService.getNonWinQtyRatio(pageNo, pageSize, searchKey, request);
} }
@@ -446,7 +319,6 @@ public class ReportController {
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return reportAppService.getPhysicianWorkloadPage(physicianWorkloadReportSearchParam, pageNo, pageSize, return reportAppService.getPhysicianWorkloadPage(physicianWorkloadReportSearchParam, pageNo, pageSize,
searchKey, request); searchKey, request);
>>>>>>> v1.3
} }
} }

Some files were not shown because too many files have changed in this diff Show More