565 [库房管理-调拨] 调拨单明细中“源仓库库存数量”未正确读取库存值,始终显示为0
600 【住院护士站-医嘱执行】数据一致性:医嘱执行成功后,在“已执行”列表中无法查询到该医嘱记录
This commit is contained in:
68
.gitignore
vendored
68
.gitignore
vendored
@@ -1,68 +0,0 @@
|
|||||||
# 忽略所有编译器、IDE相关的文件
|
|
||||||
**/.idea/
|
|
||||||
**/.vscode/
|
|
||||||
**/*.swp
|
|
||||||
**/*.swo
|
|
||||||
**/*.bak
|
|
||||||
**/*.tmp
|
|
||||||
**/.vs/
|
|
||||||
|
|
||||||
# 忽略 Java 项目编译文件
|
|
||||||
**/*.class
|
|
||||||
**/*.jar
|
|
||||||
**/*.war
|
|
||||||
**/*.ear
|
|
||||||
**/target/
|
|
||||||
**/bin/
|
|
||||||
|
|
||||||
# 忽略 Maven、Gradle、Ant 相关文件
|
|
||||||
**/.mvn/
|
|
||||||
**/.gradle/
|
|
||||||
**/build/
|
|
||||||
**/out/
|
|
||||||
|
|
||||||
# 忽略 Eclipse、IntelliJ IDEA 和 NetBeans 临时文件
|
|
||||||
**/*.log
|
|
||||||
**/*.project
|
|
||||||
**/*.classpath
|
|
||||||
|
|
||||||
# 忽略 Java 配置文件
|
|
||||||
**/*.iml
|
|
||||||
|
|
||||||
# 忽略 Node.js 和 Vue 项目相关文件
|
|
||||||
**/node_modules/
|
|
||||||
**/npm-debug.log
|
|
||||||
**/yarn-error.log
|
|
||||||
**/yarn-debug.log
|
|
||||||
**/dist/
|
|
||||||
**/*.lock
|
|
||||||
**/*.tgz
|
|
||||||
|
|
||||||
# 忽略 Vue 项目相关构建文件
|
|
||||||
**/.vuepress/dist/
|
|
||||||
|
|
||||||
# 忽略 IDE 配置文件
|
|
||||||
**/*.launch
|
|
||||||
**/*.settings/
|
|
||||||
|
|
||||||
# 忽略操作系统生成的文件
|
|
||||||
**/.DS_Store
|
|
||||||
**/Thumbs.db
|
|
||||||
**/Desktop.ini
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/openhis-miniapp/unpackage
|
|
||||||
|
|
||||||
# 忽略设计书
|
|
||||||
PostgreSQL/openHis_DB设计书.xlsx
|
|
||||||
|
|
||||||
public.sql
|
|
||||||
发版记录/2025-11-12/~$发版日志.docx
|
|
||||||
发版记录/2025-11-12/~$S-管理系统-调价管理.docx
|
|
||||||
发版记录/2025-11-12/发版日志.docx
|
|
||||||
.gitignore
|
|
||||||
openhis-server-new/openhis-application/src/main/resources/application-dev.yml
|
|
||||||
.env.test.local
|
|
||||||
playwright-report/
|
|
||||||
test-results/
|
|
||||||
@@ -185,12 +185,13 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
QueryWrapper<InpatientAdviceParam> queryWrapper
|
QueryWrapper<InpatientAdviceParam> queryWrapper
|
||||||
= HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
|
= HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
|
||||||
|
|
||||||
// 手动拼接requestStatus条件:COMPLETED(3)时同时包含CHECK_VERIFIED(10)
|
// 手动拼接requestStatus条件:COMPLETED(3)时同时包含CHECK_VERIFIED(10)和PENDING_RECEIVE(11)
|
||||||
// UNION查询外层列名为request_status(T1.status_enum AS request_status),不是status_enum
|
// UNION查询外层列名为request_status(T1.status_enum AS request_status),不是status_enum
|
||||||
if (requestStatus != null) {
|
if (requestStatus != null) {
|
||||||
if (RequestStatus.COMPLETED.getValue().equals(requestStatus)) {
|
if (RequestStatus.COMPLETED.getValue().equals(requestStatus)) {
|
||||||
queryWrapper.in("request_status",
|
queryWrapper.in("request_status",
|
||||||
RequestStatus.COMPLETED.getValue(), RequestStatus.CHECK_VERIFIED.getValue());
|
RequestStatus.COMPLETED.getValue(), RequestStatus.CHECK_VERIFIED.getValue(),
|
||||||
|
RequestStatus.PENDING_RECEIVE.getValue());
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.eq("request_status", requestStatus);
|
queryWrapper.eq("request_status", requestStatus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -262,7 +262,7 @@
|
|||||||
AND T1.inventory_status_enum != 3
|
AND T1.inventory_status_enum != 3
|
||||||
AND T1.delete_flag = '0'
|
AND T1.delete_flag = '0'
|
||||||
<choose>
|
<choose>
|
||||||
<when test="lotNumber != null">
|
<when test="lotNumber != null and lotNumber != ''">
|
||||||
AND T1.lot_number = #{lotNumber}
|
AND T1.lot_number = #{lotNumber}
|
||||||
</when>
|
</when>
|
||||||
</choose>
|
</choose>
|
||||||
|
|||||||
@@ -1180,6 +1180,9 @@ function selectRow(rowValue, index) {
|
|||||||
form.purchaseinventoryList[index].partPercent = rowValue.partPercent;
|
form.purchaseinventoryList[index].partPercent = rowValue.partPercent;
|
||||||
form.purchaseinventoryList[index].unitList = rowValue.unitList[0];
|
form.purchaseinventoryList[index].unitList = rowValue.unitList[0];
|
||||||
form.purchaseinventoryList[index].lotNumber = rowValue.lotNumber;
|
form.purchaseinventoryList[index].lotNumber = rowValue.lotNumber;
|
||||||
|
// 补全单位字典文本,formatInventory 依赖此字段格式化库存显示
|
||||||
|
form.purchaseinventoryList[index].unitCode_dictText = rowValue.unitCode_dictText;
|
||||||
|
form.purchaseinventoryList[index].minUnitCode_dictText = rowValue.minUnitCode_dictText;
|
||||||
form.purchaseinventoryList[index].itemQuantity = 0;
|
form.purchaseinventoryList[index].itemQuantity = 0;
|
||||||
form.purchaseinventoryList[index].totalPrice = 0;
|
form.purchaseinventoryList[index].totalPrice = 0;
|
||||||
// 维护一个大小单位的map,用来判断当前选中单位是大/小单位
|
// 维护一个大小单位的map,用来判断当前选中单位是大/小单位
|
||||||
@@ -1194,21 +1197,13 @@ function selectRow(rowValue, index) {
|
|||||||
value: rowValue.minUnitCode,
|
value: rowValue.minUnitCode,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
if (route.query.supplyBusNo) {
|
// 新单/编辑单统一使用行级仓库ID,不再分支判断 route.query.supplyBusNo
|
||||||
handleLocationClick(
|
handleLocationClick(
|
||||||
receiptHeaderForm.sourceLocationId1,
|
form.purchaseinventoryList[index].sourceLocationId,
|
||||||
receiptHeaderForm.purposeLocationId1,
|
form.purchaseinventoryList[index].purposeLocationId,
|
||||||
form.purchaseinventoryList[index].itemId,
|
form.purchaseinventoryList[index].itemId,
|
||||||
index
|
index
|
||||||
);
|
);
|
||||||
} else {
|
|
||||||
handleLocationClick(
|
|
||||||
form.purchaseinventoryList[index].sourceLocationId,
|
|
||||||
form.purchaseinventoryList[index].purposeLocationId,
|
|
||||||
form.purchaseinventoryList[index].itemId,
|
|
||||||
index
|
|
||||||
);
|
|
||||||
}
|
|
||||||
editBatchTransfer(index); // todo
|
editBatchTransfer(index); // todo
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1220,23 +1215,29 @@ function handleLocationClick(id, purposeLocationId, itemId, index) {
|
|||||||
objLocationId: purposeLocationId,
|
objLocationId: purposeLocationId,
|
||||||
lotNumber: form.purchaseinventoryList[index].lotNumber,
|
lotNumber: form.purchaseinventoryList[index].lotNumber,
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
if (res.data && res.data[0]) {
|
if (res.data && res.data.length) {
|
||||||
form.purchaseinventoryList[index].itemTable = res.data[0].itemTable || '';
|
// SQL 按 locationId 分组后可能有两条记录(源/目的),根据 locationId 精确匹配而非盲目取 res.data[0]
|
||||||
form.purchaseinventoryList[index].supplierId = res.data[0].supplierId || '';
|
const srcId = String(id);
|
||||||
form.purchaseinventoryList[index].startTime = formatDateymd(res.data[0].productionDate) || '';
|
const purId = String(purposeLocationId);
|
||||||
form.purchaseinventoryList[index].endTime = formatDateymd(res.data[0].expirationDate) || '';
|
const sourceRow = res.data.find(item => String(item.locationId) === srcId) || {};
|
||||||
|
const purposeRow = res.data.find(item => String(item.locationId) === purId) || {};
|
||||||
|
|
||||||
form.purchaseinventoryList[index].price = res.data[0].price;
|
form.purchaseinventoryList[index].itemTable = sourceRow.itemTable || '';
|
||||||
form.purchaseinventoryList[index].totalSourceQuantity = res.data[0].orgQuantity;
|
form.purchaseinventoryList[index].supplierId = sourceRow.supplierId || '';
|
||||||
form.purchaseinventoryList[index].totalPurposeQuantity = res.data[0].objQuantity;
|
form.purchaseinventoryList[index].startTime = formatDateymd(sourceRow.productionDate) || '';
|
||||||
|
form.purchaseinventoryList[index].endTime = formatDateymd(sourceRow.expirationDate) || '';
|
||||||
|
|
||||||
|
form.purchaseinventoryList[index].price = sourceRow.price;
|
||||||
|
form.purchaseinventoryList[index].totalSourceQuantity = sourceRow.orgQuantity || 0;
|
||||||
|
form.purchaseinventoryList[index].totalPurposeQuantity = purposeRow.objQuantity || 0;
|
||||||
form.purchaseinventoryList[index].totalSourceQuantityDisplay = formatInventory(
|
form.purchaseinventoryList[index].totalSourceQuantityDisplay = formatInventory(
|
||||||
res.data[0].orgQuantity,
|
sourceRow.orgQuantity || 0,
|
||||||
form.purchaseinventoryList[index].partPercent,
|
form.purchaseinventoryList[index].partPercent,
|
||||||
form.purchaseinventoryList[index].unitCode_dictText,
|
form.purchaseinventoryList[index].unitCode_dictText,
|
||||||
form.purchaseinventoryList[index].minUnitCode_dictText
|
form.purchaseinventoryList[index].minUnitCode_dictText
|
||||||
);
|
);
|
||||||
form.purchaseinventoryList[index].totalPurposeQuantityDisplay = formatInventory(
|
form.purchaseinventoryList[index].totalPurposeQuantityDisplay = formatInventory(
|
||||||
res.data[0].objQuantity,
|
purposeRow.objQuantity || 0,
|
||||||
form.purchaseinventoryList[index].partPercent,
|
form.purchaseinventoryList[index].partPercent,
|
||||||
form.purchaseinventoryList[index].unitCode_dictText,
|
form.purchaseinventoryList[index].unitCode_dictText,
|
||||||
form.purchaseinventoryList[index].minUnitCode_dictText
|
form.purchaseinventoryList[index].minUnitCode_dictText
|
||||||
@@ -1340,8 +1341,8 @@ function formatInventory(quantity, partPercent, unitCode, minUnitCode) {
|
|||||||
return isNegative ? '-' + result : result;
|
return isNegative ? '-' + result : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 整除情况
|
// 整除时也需拼接单位后缀,否则显示为纯数字缺少单位信息
|
||||||
const result = absQuantity / partPercent;
|
const result = (absQuantity / partPercent) + ' ' + unitCode;
|
||||||
return isNegative ? '-' + result : result;
|
return isNegative ? '-' + result : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user