套餐设置功能前后端内容基本完成(细节未处理)
This commit is contained in:
@@ -0,0 +1,254 @@
|
||||
package com.openhis.web.lab.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.core.common.core.controller.BaseController;
|
||||
import com.core.common.core.domain.AjaxResult;
|
||||
import com.core.common.core.page.TableDataInfo;
|
||||
import com.openhis.lab.domain.InspectionPackage;
|
||||
import com.openhis.lab.domain.InspectionPackageDetail;
|
||||
import com.openhis.lab.service.IInspectionPackageDetailService;
|
||||
import com.openhis.lab.service.IInspectionPackageService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验套餐管理Controller
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-12-25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/inspection-package")
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class InspectionPackageController extends BaseController {
|
||||
|
||||
private final IInspectionPackageService inspectionPackageService;
|
||||
private final IInspectionPackageDetailService inspectionPackageDetailService;
|
||||
private final TransactionTemplate transactionTemplate;
|
||||
|
||||
/**
|
||||
* 新增检验套餐基本信息
|
||||
*/
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody InspectionPackage inspectionPackage) {
|
||||
// 校验套餐名称唯一性
|
||||
if (!inspectionPackageService.checkPackageNameUnique(inspectionPackage.getPackageName(),
|
||||
inspectionPackage.getOrgName(), null)) {
|
||||
return AjaxResult.error("套餐名称已存在");
|
||||
}
|
||||
|
||||
// 校验套餐类别(固定为"检验套餐")
|
||||
if (!"检验套餐".equals(inspectionPackage.getPackageCategory())) {
|
||||
inspectionPackage.setPackageCategory("检验套餐");
|
||||
}
|
||||
|
||||
try {
|
||||
boolean result = inspectionPackageService.insertPackage(inspectionPackage);
|
||||
if (result) {
|
||||
log.info("新增检验套餐成功:packageName={}, basicInformationId={}",
|
||||
inspectionPackage.getPackageName(), inspectionPackage.getBasicInformationId());
|
||||
return AjaxResult.success()
|
||||
.put("packageId", inspectionPackage.getBasicInformationId()) // 保持向后兼容
|
||||
.put("basicInformationId", inspectionPackage.getBasicInformationId())
|
||||
.put("id", inspectionPackage.getBasicInformationId());
|
||||
} else {
|
||||
return AjaxResult.error("新增失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("新增检验套餐失败:packageName={}, error={}",
|
||||
inspectionPackage.getPackageName(), e.getMessage(), e);
|
||||
return AjaxResult.error("新增失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改检验套餐基本信息
|
||||
*/
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody InspectionPackage inspectionPackage) {
|
||||
// 校验套餐是否存在
|
||||
InspectionPackage existing = inspectionPackageService.selectPackageById(inspectionPackage.getBasicInformationId());
|
||||
if (existing == null) {
|
||||
return AjaxResult.error("套餐不存在");
|
||||
}
|
||||
|
||||
// 校验套餐名称唯一性
|
||||
if (!inspectionPackageService.checkPackageNameUnique(inspectionPackage.getPackageName(),
|
||||
inspectionPackage.getOrgName(), inspectionPackage.getBasicInformationId())) {
|
||||
return AjaxResult.error("套餐名称已存在");
|
||||
}
|
||||
|
||||
try {
|
||||
boolean result = inspectionPackageService.updatePackage(inspectionPackage);
|
||||
if (result) {
|
||||
log.info("修改检验套餐成功:basicInformationId={}, packageName={}",
|
||||
inspectionPackage.getBasicInformationId(), inspectionPackage.getPackageName());
|
||||
return AjaxResult.success();
|
||||
} else {
|
||||
return AjaxResult.error("修改失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("修改检验套餐失败:basicInformationId={}, error={}",
|
||||
inspectionPackage.getBasicInformationId(), e.getMessage(), e);
|
||||
return AjaxResult.error("修改失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询检验套餐详情
|
||||
*/
|
||||
@GetMapping("/{basicInformationId}")
|
||||
public AjaxResult getInfo(@PathVariable String basicInformationId) {
|
||||
InspectionPackage inspectionPackage = inspectionPackageService.selectPackageById(basicInformationId);
|
||||
if (inspectionPackage == null) {
|
||||
return AjaxResult.error("套餐不存在");
|
||||
}
|
||||
return AjaxResult.success(inspectionPackage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询检验套餐列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(InspectionPackage inspectionPackage,
|
||||
@RequestParam(required = false) Integer pageNum,
|
||||
@RequestParam(required = false) Integer pageSize) {
|
||||
// 设置默认分页参数
|
||||
if (pageNum == null) pageNum = 1;
|
||||
if (pageSize == null) pageSize = 10;
|
||||
|
||||
List<InspectionPackage> list = inspectionPackageService.selectPackageList(inspectionPackage, pageNum, pageSize);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除检验套餐
|
||||
*/
|
||||
@DeleteMapping("/{basicInformationId}")
|
||||
public AjaxResult remove(@PathVariable String basicInformationId) {
|
||||
// 校验套餐是否存在
|
||||
InspectionPackage existing = inspectionPackageService.selectPackageById(basicInformationId);
|
||||
if (existing == null) {
|
||||
return AjaxResult.error("套餐不存在");
|
||||
}
|
||||
|
||||
try {
|
||||
boolean result = inspectionPackageService.deletePackage(basicInformationId);
|
||||
if (result) {
|
||||
log.info("删除检验套餐成功:basicInformationId={}", basicInformationId);
|
||||
return AjaxResult.success("删除成功");
|
||||
} else {
|
||||
return AjaxResult.error("删除失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("删除检验套餐失败:basicInformationId={}, error={}", basicInformationId, e.getMessage(), e);
|
||||
return AjaxResult.error("删除失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// ============ 明细数据管理接口 ============
|
||||
|
||||
/**
|
||||
* 批量保存检验套餐明细
|
||||
*/
|
||||
@PostMapping("/details/batch")
|
||||
public AjaxResult batchSaveDetails(@RequestBody BatchSaveDetailRequest request) {
|
||||
// 校验套餐是否存在
|
||||
InspectionPackage inspectionPackage = inspectionPackageService.selectPackageById(request.getBasicInformationId());
|
||||
if (inspectionPackage == null) {
|
||||
return AjaxResult.error("套餐不存在");
|
||||
}
|
||||
|
||||
try {
|
||||
var result = inspectionPackageDetailService.batchSaveDetails(request.getBasicInformationId(), request.getDetails());
|
||||
log.info("批量保存明细成功:basicInformationId={}, successCount={}, failCount={}",
|
||||
request.getBasicInformationId(), result.get("successCount"), result.get("failCount"));
|
||||
return AjaxResult.success("批量保存成功").put("data", result);
|
||||
} catch (Exception e) {
|
||||
log.error("批量保存明细失败:basicInformationId={}, error={}", request.getBasicInformationId(), e.getMessage(), e);
|
||||
return AjaxResult.error("批量保存失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询检验套餐明细列表
|
||||
*/
|
||||
@GetMapping("/details/{basicInformationId}")
|
||||
public AjaxResult getDetails(@PathVariable String basicInformationId) {
|
||||
// 校验套餐是否存在
|
||||
InspectionPackage inspectionPackage = inspectionPackageService.selectPackageById(basicInformationId);
|
||||
if (inspectionPackage == null) {
|
||||
return AjaxResult.error("套餐不存在");
|
||||
}
|
||||
|
||||
List<InspectionPackageDetail> details = inspectionPackageDetailService.selectDetailsByPackageId(basicInformationId);
|
||||
return AjaxResult.success(details);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存单个检验套餐明细
|
||||
*/
|
||||
@PostMapping("/details")
|
||||
public AjaxResult saveDetail(@RequestBody InspectionPackageDetail detail) {
|
||||
// 校验套餐是否存在
|
||||
InspectionPackage inspectionPackage = inspectionPackageService.selectPackageById(detail.getBasicInformationId());
|
||||
if (inspectionPackage == null) {
|
||||
return AjaxResult.error("套餐不存在");
|
||||
}
|
||||
|
||||
try {
|
||||
boolean result = inspectionPackageDetailService.saveDetail(detail);
|
||||
if (result) {
|
||||
log.info("保存单个明细成功:detailId={}", detail.getDetailId());
|
||||
return AjaxResult.success("保存成功").put("detailId", detail.getDetailId());
|
||||
} else {
|
||||
return AjaxResult.error("保存失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("保存单个明细失败:error={}", e.getMessage(), e);
|
||||
return AjaxResult.error("保存失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除检验套餐明细
|
||||
*/
|
||||
@DeleteMapping("/details")
|
||||
public AjaxResult deleteDetails(@RequestBody DeleteDetailRequest request) {
|
||||
if (request.getDetailIds() == null || request.getDetailIds().isEmpty()) {
|
||||
return AjaxResult.error("明细ID不能为空");
|
||||
}
|
||||
|
||||
try {
|
||||
int deletedCount = inspectionPackageDetailService.deleteDetails(request.getDetailIds());
|
||||
log.info("删除明细成功:detailIds={}, deletedCount={}", request.getDetailIds(), deletedCount);
|
||||
return AjaxResult.success("删除成功");
|
||||
} catch (Exception e) {
|
||||
log.error("删除明细失败:detailIds={}, error={}", request.getDetailIds(), e.getMessage(), e);
|
||||
return AjaxResult.error("删除失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 请求DTO类
|
||||
public static class BatchSaveDetailRequest {
|
||||
private String basicInformationId;
|
||||
private List<InspectionPackageDetail> details;
|
||||
|
||||
public String getBasicInformationId() { return basicInformationId; }
|
||||
public void setBasicInformationId(String basicInformationId) { this.basicInformationId = basicInformationId; }
|
||||
public List<InspectionPackageDetail> getDetails() { return details; }
|
||||
public void setDetails(List<InspectionPackageDetail> details) { this.details = details; }
|
||||
}
|
||||
|
||||
public static class DeleteDetailRequest {
|
||||
private List<String> detailIds;
|
||||
|
||||
public List<String> getDetailIds() { return detailIds; }
|
||||
public void setDetailIds(List<String> detailIds) { this.detailIds = detailIds; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user