改价判断修改,入库换算新增
This commit is contained in:
@@ -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<InventoryReceiptPageDto> 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
/** 申请时间 */
|
||||
|
||||
@@ -41,4 +41,10 @@ public class ItemChargeDetailDto implements Serializable {
|
||||
|
||||
/** 基础价格 */
|
||||
private BigDecimal sellPrice;
|
||||
|
||||
/** 药品单位 */
|
||||
private String unitCode;
|
||||
|
||||
/** 最小单位 */
|
||||
private String minUnitCode;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
<foreach collection="itemIdList" item="itemId" separator="," open="(" close=")">
|
||||
#{itemId}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -71,9 +71,6 @@ public class SupplyRequest extends HisBaseEntity {
|
||||
/** 物品计量单位 */
|
||||
private String unitCode;
|
||||
|
||||
/** 拆零单位 */
|
||||
private String minUnitCode;
|
||||
|
||||
/** 请求细节 */
|
||||
private String detailJson;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user