diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/appservice/IInfectionEnhancedAppService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/appservice/IInfectionEnhancedAppService.java new file mode 100644 index 000000000..ad7dab762 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/appservice/IInfectionEnhancedAppService.java @@ -0,0 +1,19 @@ +package com.healthlink.his.web.infection.appservice; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.healthlink.his.infection.domain.*; + +import java.util.Map; + +public interface IInfectionEnhancedAppService { + Page getHandHygienePage(String departmentName, int pageNo, int pageSize); + HandHygiene recordHandHygiene(Map params); + Map getHandHygieneStats(Long departmentId); + + Page getEnvironmentalPage(String departmentName, String monitorType, String result, int pageNo, int pageSize); + EnvironmentalMonitor recordEnvironmental(Map params); + Map getEnvironmentalStats(); + + Page getMultiDrugPage(String patientName, String bacteriaName, Integer isolationStatus, int pageNo, int pageSize); + MultiDrugResistant recordMultiDrug(Map params); +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/appservice/impl/InfectionEnhancedAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/appservice/impl/InfectionEnhancedAppServiceImpl.java new file mode 100644 index 000000000..27539a868 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/appservice/impl/InfectionEnhancedAppServiceImpl.java @@ -0,0 +1,185 @@ +package com.healthlink.his.web.infection.appservice.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.healthlink.his.infection.domain.*; +import com.healthlink.his.infection.service.*; +import com.healthlink.his.web.infection.appservice.IInfectionEnhancedAppService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Slf4j +@AllArgsConstructor +public class InfectionEnhancedAppServiceImpl implements IInfectionEnhancedAppService { + + private final IHandHygieneService handHygieneService; + private final IEnvironmentalMonitorService envMonitorService; + private final IMultiDrugResistantService mdrService; + + // ==================== 手卫生 ==================== + + @Override + public Page getHandHygienePage(String departmentName, int pageNo, int pageSize) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.hasText(departmentName), HandHygiene::getDepartmentName, departmentName) + .orderByDesc(HandHygiene::getMonitorDate); + return handHygieneService.page(new Page<>(pageNo, pageSize), wrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public HandHygiene recordHandHygiene(Map params) { + log.info("记录手卫生监测数据"); + HandHygiene hh = new HandHygiene(); + hh.setDepartmentId(params.get("departmentId") != null ? Long.valueOf(params.get("departmentId").toString()) : null); + hh.setDepartmentName(getStr(params, "departmentName")); + hh.setMonitorDate(params.get("monitorDate") != null ? parseDate(params.get("monitorDate").toString()) : null); + hh.setObserveCount(parseInt(params.get("observeCount"), 0)); + hh.setComplyCount(parseInt(params.get("complyCount"), 0)); + hh.setObserverName(getStr(params, "observerName")); + hh.setRemarks(getStr(params, "remarks")); + hh.setCreateTime(new Date()); + + if (hh.getObserveCount() > 0 && hh.getComplyCount() != null) { + hh.setComplyRate(BigDecimal.valueOf(hh.getComplyCount()) + .divide(BigDecimal.valueOf(hh.getObserveCount()), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } else { + hh.setComplyRate(BigDecimal.ZERO); + } + + handHygieneService.save(hh); + return hh; + } + + @Override + public Map getHandHygieneStats(Long departmentId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (departmentId != null) { + wrapper.eq(HandHygiene::getDepartmentId, departmentId); + } + List list = handHygieneService.list(wrapper); + int totalObserve = 0, totalComply = 0; + for (HandHygiene hh : list) { + totalObserve += hh.getObserveCount() != null ? hh.getObserveCount() : 0; + totalComply += hh.getComplyCount() != null ? hh.getComplyCount() : 0; + } + Map stats = new HashMap<>(); + stats.put("totalObserve", totalObserve); + stats.put("totalComply", totalComply); + stats.put("overallRate", totalObserve > 0 ? + BigDecimal.valueOf(totalComply).divide(BigDecimal.valueOf(totalObserve), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO); + stats.put("recordCount", list.size()); + return stats; + } + + // ==================== 环境卫生学监测 ==================== + + @Override + public Page getEnvironmentalPage(String departmentName, String monitorType, String result, int pageNo, int pageSize) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.hasText(departmentName), EnvironmentalMonitor::getDepartmentName, departmentName) + .eq(StringUtils.hasText(monitorType), EnvironmentalMonitor::getMonitorType, monitorType) + .eq(StringUtils.hasText(result), EnvironmentalMonitor::getResult, result) + .orderByDesc(EnvironmentalMonitor::getMonitorDate); + return envMonitorService.page(new Page<>(pageNo, pageSize), wrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public EnvironmentalMonitor recordEnvironmental(Map params) { + log.info("记录环境卫生学监测数据"); + EnvironmentalMonitor env = new EnvironmentalMonitor(); + env.setDepartmentId(params.get("departmentId") != null ? Long.valueOf(params.get("departmentId").toString()) : null); + env.setDepartmentName(getStr(params, "departmentName")); + env.setMonitorType(getStr(params, "monitorType")); + env.setMonitorItem(getStr(params, "monitorItem")); + env.setMonitorDate(params.get("monitorDate") != null ? parseDate(params.get("monitorDate").toString()) : null); + env.setStandardValue(getStr(params, "standardValue")); + env.setActualValue(getStr(params, "actualValue")); + env.setResult(getStr(params, "result")); + env.setTesterName(getStr(params, "testerName")); + env.setRemarks(getStr(params, "remarks")); + env.setCreateTime(new Date()); + envMonitorService.save(env); + return env; + } + + @Override + public Map getEnvironmentalStats() { + Map stats = new HashMap<>(); + stats.put("total", envMonitorService.count()); + LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); + wq.eq(EnvironmentalMonitor::getResult, "合格"); + stats.put("qualified", envMonitorService.count(wq)); + wq.clear(); + wq.eq(EnvironmentalMonitor::getResult, "不合格"); + stats.put("unqualified", envMonitorService.count(wq)); + return stats; + } + + // ==================== 多重耐药菌 ==================== + + @Override + public Page getMultiDrugPage(String patientName, String bacteriaName, Integer isolationStatus, int pageNo, int pageSize) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.hasText(patientName), MultiDrugResistant::getPatientName, patientName) + .like(StringUtils.hasText(bacteriaName), MultiDrugResistant::getBacteriaName, bacteriaName) + .eq(isolationStatus != null, MultiDrugResistant::getIsolationStatus, isolationStatus) + .orderByDesc(MultiDrugResistant::getReportDate); + return mdrService.page(new Page<>(pageNo, pageSize), wrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public MultiDrugResistant recordMultiDrug(Map params) { + log.info("记录多重耐药菌数据"); + MultiDrugResistant mdr = new MultiDrugResistant(); + mdr.setPatientId(params.get("patientId") != null ? Long.valueOf(params.get("patientId").toString()) : null); + mdr.setPatientName(getStr(params, "patientName")); + mdr.setEncounterId(params.get("encounterId") != null ? Long.valueOf(params.get("encounterId").toString()) : null); + mdr.setDepartmentId(params.get("departmentId") != null ? Long.valueOf(params.get("departmentId").toString()) : null); + mdr.setDepartmentName(getStr(params, "departmentName")); + mdr.setBacteriaName(getStr(params, "bacteriaName")); + mdr.setResistanceType(getStr(params, "resistanceType")); + mdr.setSpecimenType(getStr(params, "specimenType")); + mdr.setSpecimenDate(params.get("specimenDate") != null ? parseDate(params.get("specimenDate").toString()) : null); + mdr.setReportDate(params.get("reportDate") != null ? parseDate(params.get("reportDate").toString()) : null); + mdr.setIsolationStatus(0); + mdr.setTreatmentPlan(getStr(params, "treatmentPlan")); + mdr.setOutcome(getStr(params, "outcome")); + mdr.setStatus(0); + mdr.setCreateTime(new Date()); + mdrService.save(mdr); + return mdr; + } + + // ==================== 工具方法 ==================== + + private Date parseDate(String s) { + try { return new java.text.SimpleDateFormat("yyyy-MM-dd").parse(s); } + catch (Exception e) { return null; } + } + + private int parseInt(Object val, int defaultVal) { + if (val == null) return defaultVal; + try { return Integer.parseInt(val.toString()); } + catch (NumberFormatException e) { return defaultVal; } + } + + private String getStr(Map params, String key) { + Object v = params.get(key); + return v != null ? v.toString() : null; + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/controller/InfectionEnhancedController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/controller/InfectionEnhancedController.java index b87ecd67a..674551bcb 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/controller/InfectionEnhancedController.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/infection/controller/InfectionEnhancedController.java @@ -1,187 +1,86 @@ package com.healthlink.his.web.infection.controller; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; import com.healthlink.his.infection.domain.*; -import com.healthlink.his.infection.service.*; +import com.healthlink.his.web.infection.appservice.IInfectionEnhancedAppService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.*; +import java.util.Map; -/** - * 院感管理增强Controller - * 补全: 暴发预警、目标性监测、手卫生监测、多重耐药菌、环境卫生学监测 - */ +@Tag(name = "院感管理增强") @RestController @RequestMapping("/infection-enhanced") @Slf4j @AllArgsConstructor public class InfectionEnhancedController { - private final IOutbreakWarningService outbreakService; - private final ITargetedSurveillanceService surveillanceService; - private final IHandHygieneService handHygieneService; - private final IMultiDrugResistantService mdrService; - private final IEnvironmentalMonitorService envMonitorService; - - // ==================== 暴发预警 ==================== - - @GetMapping("/outbreak/page") - public R getOutbreakPage( - @RequestParam(value = "departmentName", required = false) String departmentName, - @RequestParam(value = "status", required = false) Integer status, - @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.like(StringUtils.hasText(departmentName), OutbreakWarning::getDepartmentName, departmentName) - .eq(status != null, OutbreakWarning::getStatus, status) - .orderByDesc(OutbreakWarning::getCreateTime); - return R.ok(outbreakService.page(new Page<>(pageNo, pageSize), wrapper)); - } - - @PostMapping("/outbreak/add") - @Transactional(rollbackFor = Exception.class) - public R addOutbreak(@RequestBody OutbreakWarning warning) { - warning.setStatus(0); - warning.setCreateTime(new Date()); - outbreakService.save(warning); - return R.ok(warning); - } - - @PostMapping("/outbreak/handle") - @Transactional(rollbackFor = Exception.class) - public R handleOutbreak(@RequestBody Map params) { - Long id = Long.valueOf(params.get("id").toString()); - String result = (String) params.get("handleResult"); - OutbreakWarning warning = outbreakService.getById(id); - if (warning == null) return R.fail("预警记录不存在"); - warning.setStatus(2); - warning.setHandleResult(result); - warning.setHandleTime(new Date()); - warning.setUpdateTime(new Date()); - outbreakService.updateById(warning); - return R.ok(); - } - - @PostMapping("/outbreak/exclude") - @Transactional(rollbackFor = Exception.class) - public R excludeOutbreak(@RequestParam Long id, @RequestParam(required = false) String reason) { - OutbreakWarning warning = outbreakService.getById(id); - if (warning == null) return R.fail("预警记录不存在"); - warning.setStatus(3); - warning.setHandleResult("排除: " + (reason != null ? reason : "误报")); - warning.setHandleTime(new Date()); - warning.setUpdateTime(new Date()); - outbreakService.updateById(warning); - return R.ok(); - } - - // ==================== 目标性监测 ==================== - - @GetMapping("/surveillance/page") - public R getSurveillancePage( - @RequestParam(value = "surveillanceType", required = false) Integer type, - @RequestParam(value = "departmentName", required = false) String deptName, - @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(type != null, TargetedSurveillance::getSurveillanceType, type) - .like(StringUtils.hasText(deptName), TargetedSurveillance::getDepartmentName, deptName) - .orderByDesc(TargetedSurveillance::getStartDate); - return R.ok(surveillanceService.page(new Page<>(pageNo, pageSize), wrapper)); - } - - @PostMapping("/surveillance/add") - @Transactional(rollbackFor = Exception.class) - public R addSurveillance(@RequestBody TargetedSurveillance sv) { - sv.setStatus(0); - sv.setTotalCases(0); - sv.setInfectionCases(0); - sv.setInfectionRate(BigDecimal.ZERO); - sv.setCreateTime(new Date()); - surveillanceService.save(sv); - return R.ok(sv); - } - - @PostMapping("/surveillance/update-stats") - @Transactional(rollbackFor = Exception.class) - public R updateSurveillanceStats(@RequestBody Map params) { - Long id = Long.valueOf(params.get("id").toString()); - Integer totalCases = Integer.valueOf(params.get("totalCases").toString()); - Integer infectionCases = Integer.valueOf(params.get("infectionCases").toString()); - TargetedSurveillance sv = surveillanceService.getById(id); - if (sv == null) return R.fail("监测记录不存在"); - sv.setTotalCases(totalCases); - sv.setInfectionCases(infectionCases); - if (totalCases > 0) { - sv.setInfectionRate(BigDecimal.valueOf(infectionCases) - .divide(BigDecimal.valueOf(totalCases), 4, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(100)) - .setScale(2, RoundingMode.HALF_UP)); - } - sv.setUpdateTime(new Date()); - surveillanceService.updateById(sv); - return R.ok(); - } + private final IInfectionEnhancedAppService enhancedAppService; // ==================== 手卫生监测 ==================== + @Operation(summary = "手卫生监测列表") + @PreAuthorize("@ss.hasPermi('infection:infection:list')") @GetMapping("/hand-hygiene/page") public R getHandHygienePage( - @RequestParam(value = "departmentName", required = false) String deptName, + @RequestParam(value = "departmentName", required = false) String departmentName, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.like(StringUtils.hasText(deptName), HandHygiene::getDepartmentName, deptName) - .orderByDesc(HandHygiene::getMonitorDate); - return R.ok(handHygieneService.page(new Page<>(pageNo, pageSize), wrapper)); + return R.ok(enhancedAppService.getHandHygienePage(departmentName, pageNo, pageSize)); } + @Operation(summary = "记录手卫生监测") + @PreAuthorize("@ss.hasPermi('infection:infection:edit')") @PostMapping("/hand-hygiene/add") - @Transactional(rollbackFor = Exception.class) - public R addHandHygiene(@RequestBody HandHygiene hh) { - if (hh.getObserveCount() != null && hh.getObserveCount() > 0 && hh.getComplyCount() != null) { - hh.setComplyRate(BigDecimal.valueOf(hh.getComplyCount()) - .divide(BigDecimal.valueOf(hh.getObserveCount()), 4, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(100)) - .setScale(2, RoundingMode.HALF_UP)); - } - hh.setCreateTime(new Date()); - handHygieneService.save(hh); - return R.ok(hh); + public R addHandHygiene(@RequestBody Map params) { + return R.ok(enhancedAppService.recordHandHygiene(params)); } + @Operation(summary = "手卫生统计") + @PreAuthorize("@ss.hasPermi('infection:infection:list')") @GetMapping("/hand-hygiene/stats") - public R getHandHygieneStats(@RequestParam(required = false) Long departmentId) { - Map stats = new HashMap<>(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (departmentId != null) { - wrapper.eq(HandHygiene::getDepartmentId, departmentId); - } - List list = handHygieneService.list(wrapper); - int totalObserve = 0, totalComply = 0; - for (HandHygiene hh : list) { - totalObserve += hh.getObserveCount() != null ? hh.getObserveCount() : 0; - totalComply += hh.getComplyCount() != null ? hh.getComplyCount() : 0; - } - stats.put("totalObserve", totalObserve); - stats.put("totalComply", totalComply); - stats.put("overallRate", totalObserve > 0 ? - BigDecimal.valueOf(totalComply).divide(BigDecimal.valueOf(totalObserve), 4, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO); - stats.put("recordCount", list.size()); - return R.ok(stats); + public R getHandHygieneStats( + @RequestParam(value = "departmentId", required = false) Long departmentId) { + return R.ok(enhancedAppService.getHandHygieneStats(departmentId)); + } + + // ==================== 环境卫生学监测 ==================== + + @Operation(summary = "环境卫生学监测列表") + @PreAuthorize("@ss.hasPermi('infection:infection:list')") + @GetMapping("/env-monitor/page") + public R getEnvMonitorPage( + @RequestParam(value = "departmentName", required = false) String departmentName, + @RequestParam(value = "monitorType", required = false) String monitorType, + @RequestParam(value = "result", required = false) String result, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + return R.ok(enhancedAppService.getEnvironmentalPage(departmentName, monitorType, result, pageNo, pageSize)); + } + + @Operation(summary = "记录环境卫生学监测") + @PreAuthorize("@ss.hasPermi('infection:infection:edit')") + @PostMapping("/env-monitor/add") + public R addEnvMonitor(@RequestBody Map params) { + return R.ok(enhancedAppService.recordEnvironmental(params)); + } + + @Operation(summary = "环境卫生学监测统计") + @PreAuthorize("@ss.hasPermi('infection:infection:list')") + @GetMapping("/env-monitor/stats") + public R getEnvMonitorStats() { + return R.ok(enhancedAppService.getEnvironmentalStats()); } // ==================== 多重耐药菌 ==================== + @Operation(summary = "多重耐药菌列表") + @PreAuthorize("@ss.hasPermi('infection:infection:list')") @GetMapping("/mdr/page") public R getMdrPage( @RequestParam(value = "patientName", required = false) String patientName, @@ -189,83 +88,13 @@ public class InfectionEnhancedController { @RequestParam(value = "isolationStatus", required = false) Integer isolationStatus, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.like(StringUtils.hasText(patientName), MultiDrugResistant::getPatientName, patientName) - .like(StringUtils.hasText(bacteriaName), MultiDrugResistant::getBacteriaName, bacteriaName) - .eq(isolationStatus != null, MultiDrugResistant::getIsolationStatus, isolationStatus) - .orderByDesc(MultiDrugResistant::getReportDate); - return R.ok(mdrService.page(new Page<>(pageNo, pageSize), wrapper)); + return R.ok(enhancedAppService.getMultiDrugPage(patientName, bacteriaName, isolationStatus, pageNo, pageSize)); } + @Operation(summary = "记录多重耐药菌") + @PreAuthorize("@ss.hasPermi('infection:infection:edit')") @PostMapping("/mdr/add") - @Transactional(rollbackFor = Exception.class) - public R addMdr(@RequestBody MultiDrugResistant mdr) { - mdr.setIsolationStatus(0); - mdr.setStatus(0); - mdr.setCreateTime(new Date()); - mdrService.save(mdr); - return R.ok(mdr); - } - - @PostMapping("/mdr/isolate") - @Transactional(rollbackFor = Exception.class) - public R isolateMdr(@RequestBody Map params) { - Long id = Long.valueOf(params.get("id").toString()); - MultiDrugResistant mdr = mdrService.getById(id); - if (mdr == null) return R.fail("记录不存在"); - mdr.setIsolationStatus(1); - mdr.setIsolationStartDate(new Date()); - mdr.setUpdateTime(new Date()); - mdrService.updateById(mdr); - return R.ok(); - } - - @PostMapping("/mdr/release") - @Transactional(rollbackFor = Exception.class) - public R releaseMdr(@RequestParam Long id) { - MultiDrugResistant mdr = mdrService.getById(id); - if (mdr == null) return R.fail("记录不存在"); - mdr.setIsolationStatus(2); - mdr.setIsolationEndDate(new Date()); - mdr.setUpdateTime(new Date()); - mdrService.updateById(mdr); - return R.ok(); - } - - // ==================== 环境卫生学监测 ==================== - - @GetMapping("/env-monitor/page") - public R getEnvMonitorPage( - @RequestParam(value = "departmentName", required = false) String deptName, - @RequestParam(value = "monitorType", required = false) String monitorType, - @RequestParam(value = "result", required = false) String result, - @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.like(StringUtils.hasText(deptName), EnvironmentalMonitor::getDepartmentName, deptName) - .eq(StringUtils.hasText(monitorType), EnvironmentalMonitor::getMonitorType, monitorType) - .eq(StringUtils.hasText(result), EnvironmentalMonitor::getResult, result) - .orderByDesc(EnvironmentalMonitor::getMonitorDate); - return R.ok(envMonitorService.page(new Page<>(pageNo, pageSize), wrapper)); - } - - @PostMapping("/env-monitor/add") - @Transactional(rollbackFor = Exception.class) - public R addEnvMonitor(@RequestBody EnvironmentalMonitor env) { - env.setCreateTime(new Date()); - envMonitorService.save(env); - return R.ok(env); - } - - @GetMapping("/env-monitor/stats") - public R getEnvMonitorStats() { - Map stats = new HashMap<>(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - stats.put("total", envMonitorService.count(wrapper)); - wrapper.eq(EnvironmentalMonitor::getResult, "合格"); - stats.put("qualified", envMonitorService.count(wrapper)); - wrapper.eq(EnvironmentalMonitor::getResult, "不合格"); - stats.put("unqualified", envMonitorService.count(wrapper)); - return R.ok(stats); + public R addMdr(@RequestBody Map params) { + return R.ok(enhancedAppService.recordMultiDrug(params)); } }