Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
wangjian963
2026-05-08 17:46:51 +08:00
15 changed files with 527 additions and 14 deletions

View File

@@ -106,6 +106,7 @@ public class CheckMethodAppServiceImpl implements ICheckMethodAppService {
if (ObjectUtil.isNotEmpty(m.getPackageName())) {
CheckPackage pkg = packageMap.get(m.getPackageName());
if (pkg != null) {
dto.setPackageId(pkg.getId());
dto.setPackagePrice(pkg.getPackagePrice());
dto.setServiceFee(pkg.getServiceFee());
}

View File

@@ -220,6 +220,36 @@ public class CheckTypeController extends BaseController {
return AjaxResult.success(result);
}
/**
* 查询检查套餐明细,用于医生站已选择套餐展开显示
*/
@GetMapping({ "/package/{packageId}/details", "/check-package/{packageId}/details" })
public AjaxResult getPackageDetails(@PathVariable Long packageId) {
List<CheckPackageDetail> details = checkPackageDetailService.list(
new LambdaQueryWrapper<CheckPackageDetail>()
.eq(CheckPackageDetail::getPackageId, packageId)
.orderByAsc(CheckPackageDetail::getOrderNum)
.orderByAsc(CheckPackageDetail::getId));
List<Map<String, Object>> result = details.stream().map(d -> {
Map<String, Object> item = new LinkedHashMap<>();
item.put("id", d.getId());
item.put("packageId", d.getPackageId());
item.put("itemCode", d.getItemCode());
item.put("itemName", d.getItemName());
item.put("name", d.getItemName());
item.put("quantity", d.getQuantity());
item.put("unit", d.getUnit());
item.put("unitPrice", d.getUnitPrice());
item.put("price", d.getUnitPrice());
item.put("amount", d.getAmount());
item.put("orderNum", d.getOrderNum());
return item;
}).collect(Collectors.toList());
return AjaxResult.success(result);
}
/** 套餐级别文字映射 */
private String parseLevelText(String level) {
if ("1".equals(level))

View File

@@ -31,6 +31,9 @@ public class CheckMethodDto {
/* 套餐名称 */
private String packageName;
/* 套餐ID */
private Long packageId;
/* 套餐价格 - Bug #384修复通过packageName匹配CheckPackage获取 */
private BigDecimal packagePrice;

View File

@@ -25,7 +25,9 @@ public interface ISurgeryAppService {
* @param plannedTimeEnd 计划结束时间
* @return 手术列表
*/
IPage<SurgeryDto> getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize, String plannedTimeStart, String plannedTimeEnd);
IPage<SurgeryDto> getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize,
String plannedTimeStart, String plannedTimeEnd,
String createTimeStart, String createTimeEnd);
/**
* 根据ID查询手术详情

View File

@@ -108,7 +108,9 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService {
* @return 手术列表
*/
@Override
public IPage<SurgeryDto> getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize, String plannedTimeStart, String plannedTimeEnd) {
public IPage<SurgeryDto> getSurgeryPage(SurgeryDto surgeryDto, Integer pageNo, Integer pageSize,
String plannedTimeStart, String plannedTimeEnd,
String createTimeStart, String createTimeEnd) {
QueryWrapper<SurgeryDto> queryWrapper = HisQueryUtils.buildQueryWrapper(surgeryDto, null,
new HashSet<String>() {{
add("surgery_no");
@@ -148,6 +150,34 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService {
}
}
}
// 申请时间范围(创建时间 create_time查询用于“手术申请查询”弹窗
if (createTimeStart != null && !createTimeStart.isEmpty()) {
try {
LocalDateTime startDateTime = LocalDateTime.parse(createTimeStart, DateTimeFormatter.ISO_DATE_TIME);
queryWrapper.ge("create_time", startDateTime);
} catch (Exception e) {
try {
LocalDateTime startDateTime = LocalDateTime.parse(createTimeStart + "T00:00:00", DateTimeFormatter.ISO_DATE_TIME);
queryWrapper.ge("create_time", startDateTime);
} catch (Exception ex) {
log.error("解析创建开始时间失败: {}", createTimeStart, ex);
}
}
}
if (createTimeEnd != null && !createTimeEnd.isEmpty()) {
try {
LocalDateTime endDateTime = LocalDateTime.parse(createTimeEnd, DateTimeFormatter.ISO_DATE_TIME);
queryWrapper.le("create_time", endDateTime);
} catch (Exception e) {
try {
LocalDateTime endDateTime = LocalDateTime.parse(createTimeEnd + "T23:59:59", DateTimeFormatter.ISO_DATE_TIME);
queryWrapper.le("create_time", endDateTime);
} catch (Exception ex) {
log.error("解析创建结束时间失败: {}", createTimeEnd, ex);
}
}
}
queryWrapper.orderByDesc("create_time");
return surgeryAppMapper.getSurgeryPage(new Page<>(pageNo, pageSize), queryWrapper);

View File

@@ -40,9 +40,12 @@ public class SurgeryController {
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(value = "plannedTimeStart", required = false) String plannedTimeStart,
@RequestParam(value = "plannedTimeEnd", required = false) String plannedTimeEnd) {
@RequestParam(value = "plannedTimeEnd", required = false) String plannedTimeEnd,
@RequestParam(value = "createTimeStart", required = false) String createTimeStart,
@RequestParam(value = "createTimeEnd", required = false) String createTimeEnd) {
// 将时间范围参数传递给服务层
IPage<SurgeryDto> page = surgeryAppService.getSurgeryPage(surgeryDto, pageNo, pageSize, plannedTimeStart, plannedTimeEnd);
IPage<SurgeryDto> page = surgeryAppService.getSurgeryPage(surgeryDto, pageNo, pageSize,
plannedTimeStart, plannedTimeEnd, createTimeStart, createTimeEnd);
return R.ok(page);
}

View File

@@ -912,7 +912,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
ChargeItem chargeItem;
// 新增 + 修改
// 🔧 BugFix: 如果 requestId 不为空说明是已存在的医嘱,需要更新,即使 dbOpType 不匹配也应该包含进来
// 🔧 BugFix #454: 排除删除操作避免误入insertOrUpdateList
List<AdviceSaveDto> insertOrUpdateList = medicineList.stream()
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType()))
.filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType())
|| e.getRequestId() != null))
@@ -1358,7 +1360,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
ChargeItem chargeItem;
// 新增 + 修改
// 🔧 BugFix: 如果 requestId 不为空说明是已存在的医嘱,需要更新,即使 dbOpType 不匹配也应该包含进来
// 🔧 BugFix #454: 排除删除操作避免误入insertOrUpdateList
List<AdviceSaveDto> insertOrUpdateList = deviceList.stream()
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType()))
.filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType())
|| e.getRequestId() != null))
@@ -1673,7 +1677,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
ChargeItem chargeItem;
// 新增 + 修改
// 🔧 BugFix: 如果 requestId 不为空说明是已存在的医嘱,需要更新,即使 dbOpType 不匹配也应该包含进来
// 🔧 BugFix #454: 排除删除操作避免误入insertOrUpdateList触发执行科室校验
List<AdviceSaveDto> insertOrUpdateList = activityList.stream()
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType()))
.filter(e -> (DbOpType.INSERT.getCode().equals(e.getDbOpType())
|| DbOpType.UPDATE.getCode().equals(e.getDbOpType())
|| e.getRequestId() != null))