169 库房管理-》采购管理-》采购管理:选中采购管理中的数据,点击删除报错,已解决,并新增批量删除功能

This commit is contained in:
liuliu
2026-03-10 18:07:07 +08:00
parent 39b608dfd0
commit 066c457d90
7 changed files with 133 additions and 73 deletions

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.core.domain.model.LoginUser;
import com.core.common.utils.SecurityUtils;
import com.core.common.core.domain.model.LoginUser;
import com.openhis.infectious.domain.InfectiousAudit;
@@ -39,7 +40,7 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
* 报卡管理 Service实现
* 报卡管理 Service 实现
*
* @author system
* @date 2026-03-05
@@ -102,7 +103,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
IPage<InfectiousCard> result = infectiousCardMapper.selectPage(page, wrapper);
// 转换为DTO
// 转换为 DTO
List<InfectiousCardDto> list = result.getRecords().stream().map(this::convertToDto).collect(Collectors.toList());
Map<String, Object> resultMap = new HashMap<>();
@@ -177,7 +178,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
if (card == null) continue;
if ("2".equals(card.getStatus()) || "3".equals(card.getStatus())) continue;
// 更新状态为退回(审核失败)
// 更新状态为退回 (审核失败)
String oldStatus = card.getStatus();
card.setStatus("5");
card.setReturnReason(batchReturnDto.getReturnReason());
@@ -367,7 +368,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
IPage<InfectiousCard> result = infectiousCardMapper.selectPage(page, wrapper);
// 转换为DTO
// 转换为 DTO
List<DoctorCardListDto> list = result.getRecords().stream()
.map(this::convertToDoctorCardListDto)
.collect(Collectors.toList());
@@ -536,7 +537,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
return R.fail("报卡不存在");
}
// 验证是否当前医生的报卡 - 根据doctorId字段验证
// 验证是否当前医生的报卡 - 根据 doctorId 字段验证
if (!currentUserId.equals(card.getDoctorId())) {
return R.fail("只能修改自己的报卡");
}
@@ -550,7 +551,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
card.setPhone(updateDto.getPhone());
card.setOnsetDate(updateDto.getOnsetDate());
card.setDiagDate(updateDto.getDiagDate());
card.setDiseaseType(updateDto.getDiseaseType()); // 使用diseaseType字段
card.setDiseaseType(updateDto.getDiseaseType()); // 使用 diseaseType 字段
card.setAddressProv(updateDto.getAddressProv());
card.setAddressCity(updateDto.getAddressCity());
card.setAddressCounty(updateDto.getAddressCounty());
@@ -558,6 +559,15 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
card.setUpdateTime(new Date());
card.setUpdateBy(loginUser.getUsername()); // 使用username作为更新者
card.setUpdateTime(new Date());
card.setUpdateBy(loginUser.getUsername()); // 使用 username 作为更新者
card.setUpdateTime(new Date());
card.setUpdateBy(loginUser.getUsername()); // 使用 username 作为更新者
card.setUpdateTime(new Date());
card.setUpdateBy(loginUser.getUsername()); // 使用 username 作为更新者
int rows = infectiousCardMapper.updateById(card);
if (rows > 0) {
return R.ok("更新成功");
@@ -583,13 +593,13 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
}
try {
// TODO: 实现Word导出逻辑使用Apache POI或其他库
// TODO: 实现 Word 导出逻辑,使用 Apache POI 或其他库
// 这里简化为返回文本内容
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.setHeader("Content-Disposition", "attachment;filename=" +
URLEncoder.encode("传染病报告卡-" + cardNo + ".docx", StandardCharsets.UTF_8));
// 实际应生成Word文档内容
// 实际应生成 Word 文档内容
response.getWriter().write("报卡编号:" + cardNo);
} catch (IOException e) {
log.error("导出报卡失败", e);
@@ -597,7 +607,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
}
/**
* 转换为医生报卡列表DTO
* 转换为医生报卡列表 DTO
*/
private DoctorCardListDto convertToDoctorCardListDto(InfectiousCard card) {
DoctorCardListDto dto = new DoctorCardListDto();
@@ -623,7 +633,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
}
/**
* 转换审核记录为DTO
* 转换审核记录为 DTO
*/
private AuditRecordDto convertAuditToDto(InfectiousAudit audit) {
AuditRecordDto dto = new AuditRecordDto();
@@ -633,7 +643,7 @@ public class CardManageAppServiceImpl implements ICardManageAppService {
}
/**
* 转换为报卡DTO
* 转换为报卡 DTO
*/
private InfectiousCardDto convertToDto(InfectiousCard card) {
InfectiousCardDto dto = new InfectiousCardDto();

View File

@@ -70,6 +70,14 @@ public interface IPurchaseInventoryAppService {
*/
R<?> deleteReceipt(List<Long> supplyRequestIds);
/**
* 根据单据号删除单据
*
* @param busNoList 单据号列表
* @return 操作结果
*/
R<?> deleteReceiptByBusNo(List<String> busNoList);
/**
* 提交审批
*

View File

@@ -271,6 +271,33 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 根据单据号删除单据
*
* @param busNoList 单据号列表
* @return 操作结果
*/
@Override
public R<?> deleteReceiptByBusNo(List<String> busNoList) {
// 收集所有需要删除的 supplyRequestId
List<Long> allRequestIdList = new ArrayList<>();
for (String busNo : busNoList) {
List<SupplyRequest> supplyRequestIdList = supplyRequestService.getSupplyByBusNo(busNo);
List<Long> requestIdList = supplyRequestIdList.stream()
.map(SupplyRequest::getId)
.toList();
allRequestIdList.addAll(requestIdList);
}
// 删除单据
if (!allRequestIdList.isEmpty()) {
boolean result = supplyRequestService.removeByIds(allRequestIdList);
return result ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null))
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
return R.ok();
}
/**
* 提交审批
*

View File

@@ -102,6 +102,17 @@ public class PurchaseInventoryController {
return purchaseInventoryAppService.deleteReceipt(supplyRequestIds);
}
/**
* 根据单据号删除单据
*
* @param busNoList 单据号列表
* @return 操作结果
*/
@DeleteMapping("/inventory-receipt-by-bus-no")
public R<?> deleteInventoryReceiptByBusNo(@RequestParam List<String> busNoList) {
return purchaseInventoryAppService.deleteReceiptByBusNo(busNoList);
}
/**
* 提交审批
*

View File

@@ -551,7 +551,7 @@
<script setup name="InventoryReceiptDialog">
import {
addPurchaseinventory,
addPurchaseInventory,
delPurchaseinventory,
getCount,
getDispensaryList,
@@ -755,7 +755,7 @@ function handleClickOutside(event) {
function saveRow(row, index) {
form.purchaseinventoryList[index] = row;
addPurchaseinventory(row).then((response) => {
addPurchaseInventory(row).then((response) => {
reset();
data.isAdding = false; // 允许新增下一行
proxy.$message.success('保存成功!');
@@ -846,7 +846,7 @@ function handleSave(row, index) {
if (valid) {
proxy.$refs['formRef'].validate((valid) => {
if (valid) {
addPurchaseinventory(row).then((res) => {
addPurchaseInventory(row).then((res) => {
// 当前行没有id视为首次新增
if (!row.id) {
data.isAdding = false; // 允许新增下一行

View File

@@ -19,7 +19,7 @@ export function getpurchaseInventoryDetail(busNo) {
}
// 添加/编辑入库单据
export function addPurchaseinventory(data) {
export function addPurchaseInventory(data) {
return request({
url: '/inventory-manage/purchase/inventory-receipt',
method: 'put',
@@ -45,7 +45,7 @@ export function getInitBusNo() {
}
// 删除单据
// 删除单据(根据供应请求 ID
export function delPurchaseinventory(param) {
return request({
url: '/inventory-manage/purchase/inventory-receipt?supplyRequestIds=' + param,
@@ -53,6 +53,14 @@ export function delPurchaseinventory(param) {
})
}
// 删除单据(根据单据号)
export function delPurchaseinventoryByBusNo(busNoList) {
return request({
url: '/inventory-manage/purchase/inventory-receipt-by-bus-no?busNoList=' + busNoList,
method: 'delete',
})
}
// 提交审批
export function submitApproval(busNo) {
return request({

View File

@@ -396,7 +396,7 @@
<script setup name="Purchaseinventory">
import {
delPurchaseinventory,
delPurchaseinventoryByBusNo,
generatedReturnDetail,
getInit,
getpurchaseInventoryDetail,
@@ -644,18 +644,14 @@ function handleSelectionChangeReturn(selection) {
}
/** 删除按钮操作 */
function handleDelete(row) {
let length = selectedRows.value.length;
let ids = [];
if (selectedRows.value[0].id) {
ids = selectedRows.value.map((item) => {
return item.id;
});
}
const deleteIds = selectedRows.value.map((item) => item.supplierId).join(',');
// 获取选中行的单据号列表
const busNoList = selectedRows.value.map((item) => item.supplyBusNo);
proxy.$modal
.confirm('是否确认删除以上数据?')
.then(function () {
return delPurchaseinventory(ids);
// 调用后端接口,根据单据号删除
return delPurchaseinventoryByBusNo(busNoList);
})
.then(() => {
getList();