From d67dfea964f2258e1bd3e0d9c4e2fab70b21a414 Mon Sep 17 00:00:00 2001 From: "Zhang.WH" Date: Tue, 11 Mar 2025 11:17:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=BB=B7=E5=88=A4=E6=96=AD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=85=A5=E5=BA=93=E6=8D=A2=E7=AE=97=E6=96=B0?= =?UTF-8?q?=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PurchaseInventoryAppServiceImpl.java | 13 ++++--- .../impl/ReceiptApprovalAppServiceImpl.java | 39 +++++++++++++------ .../assembler/InventoryManageAssembler.java | 17 ++++++++ .../dto/InventoryReceiptPageDto.java | 5 +++ .../dto/ItemChargeDetailDto.java | 6 +++ .../dto/SupplyItemDetailDto.java | 4 +- .../InventoryManage/ReceiptApprovalMapper.xml | 7 +++- .../openhis/common/enums/SupplyStatus.java | 13 ++++--- .../workflow/domain/SupplyRequest.java | 3 -- 9 files changed, 80 insertions(+), 27 deletions(-) diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/PurchaseInventoryAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/PurchaseInventoryAppServiceImpl.java index 501ceeaf..ec625cf2 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/PurchaseInventoryAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/PurchaseInventoryAppServiceImpl.java @@ -7,6 +7,9 @@ import java.util.HashSet; import javax.servlet.http.HttpServletRequest; +import com.core.common.utils.AgeCalculatorUtil; +import com.openhis.common.enums.*; +import com.openhis.common.utils.EnumUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,8 +21,6 @@ import com.core.common.utils.MessageUtils; import com.core.common.utils.bean.BeanUtils; import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.PromptMsgConstant; -import com.openhis.common.enums.SupplyCategory; -import com.openhis.common.enums.SupplyType; import com.openhis.common.utils.HisQueryUtils; import com.openhis.web.inventorymanage.appservice.IPurchaseInventoryAppService; import com.openhis.web.inventorymanage.dto.InventoryReceiptDto; @@ -39,9 +40,6 @@ import com.openhis.workflow.service.ISupplyRequestService; @Service public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppService { - @Autowired - private SupplyRequestMapper supplyRequestMapper; - @Autowired private PurchaseInventoryMapper purchaseInventoryMapper; @@ -72,6 +70,11 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer // 查询入库单据分页列表 Page inventoryReceiptPage = purchaseInventoryMapper.selectInventoryReceiptPage( new Page<>(pageNo, pageSize), queryWrapper, SupplyType.PURCHASE_INVENTORY.getValue()); + + inventoryReceiptPage.getRecords().forEach(e -> { + // 单据状态 + e.setStatusEnum_enumText(EnumUtils.getInfoByValue(SupplyStatus.class, e.getStatusEnum())); + }); return R.ok(inventoryReceiptPage); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/ReceiptApprovalAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/ReceiptApprovalAppServiceImpl.java index 01d692f8..a1309fc3 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/ReceiptApprovalAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/appservice/impl/ReceiptApprovalAppServiceImpl.java @@ -222,20 +222,37 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService // 生成请求的命中值 String lotUnitCondition = String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(), supplyRequest.getUnitCode()); - String lotMinUnitCondition = String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(), - supplyRequest.getMinUnitCode()); for (ItemChargeDetailDto detail : details) { - // 判断请求中的命中值是否命中了定价的条件 - boolean isConditionMatched = lotUnitCondition.equals(detail.getConditionValue()) - || lotMinUnitCondition.equals(detail.getConditionValue()); - // 如果未命中或命中价格不同,则新增数据 - if (isConditionMatched || !lotUnitCondition.equals(detail.getConditionValue())) { - resultList.add(this.addChargeItemDefApp(lotMinUnitCondition, supplyRequest.getMinSellPrice(), - detail.getDefinitionId())); - resultList.add(this.addChargeItemDefApp(lotUnitCondition, supplyRequest.getSellPrice(), - detail.getDefinitionId())); + // 将字符串按逗号分割 + String[] parts = detail.getConditionValue().split(",", 2); + + // 判断是否有至少两部分,且单位部分与入库单位相等 + if (parts.length > 1 && parts[1].trim().equals(supplyRequest.getUnitCode())) { + // 判断请求中的命中值是否命中了定价的条件 + boolean isConditionMatched = lotUnitCondition.equals(detail.getConditionValue()); + + // 如果未命中或命中价格不同,则新增数据 + if (!isConditionMatched || supplyRequest.getPrice().compareTo(detail.getUnitPrice()) != 0) { + // 判断入库单位是大单位还是小单位 + if (supplyRequest.getUnitCode().equals(detail.getUnitCode())) { + resultList.add(this.addChargeItemDefApp( + String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(), + detail.getMinUnitCode()), + supplyRequest.getMinSellPrice(), detail.getDefinitionId())); + resultList.add(this.addChargeItemDefApp(lotUnitCondition, supplyRequest.getSellPrice(), + detail.getDefinitionId())); + } else { + resultList + .add(this.addChargeItemDefApp( + String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(), + detail.getUnitCode()), + supplyRequest.getMinSellPrice(), detail.getDefinitionId())); + resultList.add(this.addChargeItemDefApp(lotUnitCondition, supplyRequest.getMinSellPrice(), + detail.getDefinitionId())); + } + } } } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/assembler/InventoryManageAssembler.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/assembler/InventoryManageAssembler.java index 525d6fae..2718eb4f 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/assembler/InventoryManageAssembler.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/assembler/InventoryManageAssembler.java @@ -3,6 +3,7 @@ */ package com.openhis.web.inventorymanage.assembler; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -112,6 +113,22 @@ public class InventoryManageAssembler { // 最小单位 .setMinUnitCode(supplyItemDetailDto.getMinUnitCode()); + if (supplyItemDetailDto.getItemUnit().equals(supplyItemDetailDto.getUnitCode())) { + inventoryItem + // 包装数量 + .setBaseQuantity(supplyItemDetailDto.getItemQuantity()) + // 拆零数量(拆零比×包装数量) + .setMinQuantity( + supplyItemDetailDto.getPartPercent().multiply(supplyItemDetailDto.getItemQuantity())); + } else if (supplyItemDetailDto.getItemUnit().equals(supplyItemDetailDto.getMinUnitCode())) { + inventoryItem + // 拆零数量 + .setMinQuantity(supplyItemDetailDto.getItemQuantity()) + // 包装数量(拆零数量÷拆零比) + .setBaseQuantity(supplyItemDetailDto.getItemQuantity().divide(supplyItemDetailDto.getPartPercent(), + RoundingMode.HALF_UP)); + } + chargeItemList.add(chargeItem); inventoryItemList.add(inventoryItem); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryReceiptPageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryReceiptPageDto.java index 39e92111..3b59f0d1 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryReceiptPageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/InventoryReceiptPageDto.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.annotation.Dict; import lombok.Data; import lombok.experimental.Accessors; @@ -36,20 +37,24 @@ public class InventoryReceiptPageDto implements Serializable { /** 状态 */ private Integer statusEnum; + private String statusEnum_enumText; /** 供应商 */ private Long supplierId; /** 目的仓库 */ + @Dict(dictCode = "id", dictText = "name", dictTable = "adm_location") private Long purposeLocationId; /** 审批人 */ + @Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner") private Long approverId; /** 审批时间 */ private Date approvalTime; /** 申请人 */ + @Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner") private Long applicantId; /** 申请时间 */ diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/ItemChargeDetailDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/ItemChargeDetailDto.java index f2c2bb9c..f846f247 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/ItemChargeDetailDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/ItemChargeDetailDto.java @@ -41,4 +41,10 @@ public class ItemChargeDetailDto implements Serializable { /** 基础价格 */ private BigDecimal sellPrice; + + /** 药品单位 */ + private String unitCode; + + /** 最小单位 */ + private String minUnitCode; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/SupplyItemDetailDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/SupplyItemDetailDto.java index 9054fffb..4c58ea21 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/SupplyItemDetailDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/inventorymanage/dto/SupplyItemDetailDto.java @@ -10,7 +10,6 @@ import java.util.Date; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import liquibase.pro.packaged.S; import lombok.Data; import lombok.experimental.Accessors; @@ -93,6 +92,9 @@ public class SupplyItemDetailDto implements Serializable { /** 最小单位 */ private String minUnitCode; + /** 拆零比 */ + private BigDecimal partPercent; + /** 费用定价ID */ private Long definitionId; diff --git a/openhis-server/openhis-application/src/main/resources/mapper/InventoryManage/ReceiptApprovalMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/InventoryManage/ReceiptApprovalMapper.xml index 00bf596b..5412914b 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/InventoryManage/ReceiptApprovalMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/InventoryManage/ReceiptApprovalMapper.xml @@ -70,6 +70,7 @@ T2.wb_str, T2.unit_code, T2.min_unit_code, + T2.part_percent, T3.id AS definition_id, T4.amount AS base_amount, T4.id AS applicability_id @@ -94,10 +95,14 @@ T1.price AS sell_price, T2.condition_lotnumber, T2.condition_unit_code, - T2.amount AS unit_price + T2.amount AS unit_price, + T3.unit_code, + T3.min_unit_code FROM adm_charge_item_definition AS T1 LEFT JOIN adm_charge_item_def_app AS T2 ON T1.id = T2.definition_id + LEFT JOIN med_medication_definition AS T3 + ON T1.instance_id = T3.id WHERE T1.instance_id IN #{itemId} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SupplyStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SupplyStatus.java index ffa94e94..a237d888 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SupplyStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SupplyStatus.java @@ -14,34 +14,35 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum SupplyStatus { +public enum SupplyStatus implements HisEnumInterface { /** * 待审核 */ - PENDING_APPROVAL(1, "待审核"), + PENDING_APPROVAL(1, "1", "待审核"), /** * 审核中 */ - APPROVAL(2, "审核中"), + APPROVAL(2, "2", "审核中"), /** * 同意 */ - AGREE(3, "同意"), + AGREE(3, "3", "同意"), /** * 驳回 */ - REJECT(4, "驳回"), + REJECT(4, "4", "驳回"), /** * 已撤回 */ - WITHDRAW(9, "已撤回"); + WITHDRAW(9, "5", "已撤回"); private Integer value; + private String code; private String info; public static SupplyStatus getByValue(Integer value) { diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/SupplyRequest.java b/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/SupplyRequest.java index 327ef051..d3aefc80 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/SupplyRequest.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/SupplyRequest.java @@ -71,9 +71,6 @@ public class SupplyRequest extends HisBaseEntity { /** 物品计量单位 */ private String unitCode; - /** 拆零单位 */ - private String minUnitCode; - /** 请求细节 */ private String detailJson;