Jelajahi Sumber

新增
1、长者护理记录模块
2、库存查询报表增加月份范围查询
BUGFIX
1、修复长者护理计划查询护理项目时报错

liangwenxuan 3 bulan lalu
induk
melakukan
6e180625fc
49 mengubah file dengan 893 tambahan dan 1675 penghapusan
  1. 3 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyBuildFloorActivityTextController.java
  2. 0 14
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyInspectionRespVO.java
  3. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivityimage/ElderlyBuildFloorActivityImageRespVO.java
  4. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivityimage/ElderlyBuildFloorActivityImageSaveReqVO.java
  5. 44 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextItemRespVO.java
  6. 44 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextItemSaveReqVO.java
  7. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextPageReqVO.java
  8. 4 24
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextRespVO.java
  9. 4 24
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextSaveReqVO.java
  10. 2 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/materialio/inventory/MaterialInventoryReportPageReqVO.java
  11. 78 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/ElderlyNursingLogController.java
  12. 31 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogDetailRespVO.java
  13. 29 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogPageReqVO.java
  14. 45 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogRespVO.java
  15. 35 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogSaveReqVO.java
  16. 0 21
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/NursingInspectionController.java
  17. 0 163
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/NursingLogController.java
  18. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/NursingPlanController.java
  19. 0 42
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogPageReqVO.java
  20. 0 72
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogRecordRespVO.java
  21. 0 70
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogRespVO.java
  22. 0 42
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogSaveReqVO.java
  23. 0 73
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingPlanItemRespVO.java
  24. 9 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorActivityImageDO.java
  25. 1 56
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorActivityTextDO.java
  26. 90 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorActivityTextItemDO.java
  27. 0 87
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/NursingLogDO.java
  28. 0 97
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/NursingLogRecordDO.java
  29. 0 45
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/NursingLogRemarksDO.java
  30. 44 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/elderly/ElderlyNursingLogDO.java
  31. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityImageMapper.java
  32. 44 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityTextItemMapper.java
  33. 1 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityTextMapper.java
  34. 0 33
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/NursingLogMapper.java
  35. 0 33
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/NursingLogRecordMapper.java
  36. 0 25
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/NursingLogRemarksMapper.java
  37. 33 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/elderly/ElderlyNursingLogMapper.java
  38. 1 38
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/NurseLogSyncJob.java
  39. 2 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorActivityTextService.java
  40. 70 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorActivityTextServiceImpl.java
  41. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyInfoServiceImpl.java
  42. 66 32
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/MaterialIoServiceImpl.java
  43. 26 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/elderly/ElderlyNursingLogService.java
  44. 151 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/elderly/ElderlyNursingLogServiceImpl.java
  45. 3 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NurseLevelServiceImpl.java
  46. 0 50
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NursingLogService.java
  47. 0 602
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NursingLogServiceImpl.java
  48. 16 18
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NursingPlanServiceImpl.java
  49. 1 0
      yudao-server/src/main/resources/application.yaml

+ 3 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyBuildFloorActivityTextController.java

@@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 /**
@@ -35,10 +37,7 @@ public class ElderlyBuildFloorActivityTextController {
 
     @PostMapping("/create")
     @Operation(summary = "创建楼层活动文字记录")
-    public CommonResult<Long> create(@Valid @RequestBody ElderlyBuildFloorActivityTextSaveReqVO createReqVO) {
-        if (createReqVO.getTenantId() == null) {
-            createReqVO.setTenantId(TenantContextHolder.getTenantId());
-        }
+    public CommonResult<Boolean> create(@Valid @RequestBody ElderlyBuildFloorActivityTextSaveReqVO createReqVO) {
         return success(elderlyBuildFloorActivityTextService.createElderlyBuildFloorActivityText(createReqVO));
     }
 

+ 0 - 14
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyInspectionRespVO.java

@@ -1,14 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
-
-import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanItemRespVO;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class ElderlyInspectionRespVO {
-
-    private String nurseItemCategoryName;
-
-    private List<NursingPlanItemRespVO> records;
-}

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivityimage/ElderlyBuildFloorActivityImageRespVO.java

@@ -56,6 +56,9 @@ public class ElderlyBuildFloorActivityImageRespVO {
     @Schema(description = "活动图片")
     private String activityImage;
 
+    @Schema(description = "图片备注")
+    private String activityImageRemark;
+
     @Schema(description = "机构id", example = "1")
     private Long tenantId;
 

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivityimage/ElderlyBuildFloorActivityImageSaveReqVO.java

@@ -62,6 +62,9 @@ public class ElderlyBuildFloorActivityImageSaveReqVO {
     @Schema(description = "活动图片")
     private String activityImage;
 
+    @Schema(description = "图片备注")
+    private String activityImageRemark;
+
     @Schema(description = "机构id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "机构id不能为空")
     private Long tenantId;

+ 44 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextItemRespVO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 管理后台 - 楼层活动文字记录明细 Response VO
+ *
+ * @author 系统管理员
+ */
+@Schema(description = "管理后台 - 楼层活动文字记录明细 Response VO")
+@Data
+public class ElderlyBuildFloorActivityTextItemRespVO {
+
+    @Schema(description = "id", example = "1")
+    private Long id;
+
+    @Schema(description = "日期")
+    private String activityDate;
+
+    @Schema(description = "早上第一个时间段")
+    private String morningOne;
+
+    @Schema(description = "早上第二个时间段")
+    private String morningTwo;
+
+    @Schema(description = "午餐")
+    private String lunch;
+
+    @Schema(description = "中午")
+    private String noon;
+
+    @Schema(description = "下午")
+    private String afternonn;
+
+    @Schema(description = "执行人")
+    private String excuteName;
+
+    @Schema(description = "执行记录")
+    private String excuteRecord;
+
+    @Schema(description = "机构id", example = "1")
+    private Long tenantId;
+}

+ 44 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextItemSaveReqVO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 管理后台 - 楼层活动文字记录明细新增/修改 Request VO
+ *
+ * @author 系统管理员
+ */
+@Schema(description = "管理后台 - 楼层活动文字记录明细新增/修改 Request VO")
+@Data
+public class ElderlyBuildFloorActivityTextItemSaveReqVO {
+
+    @Schema(description = "id(修改时必传)", example = "1")
+    private Long id;
+
+    @Schema(description = "日期")
+    private String activityDate;
+
+    @Schema(description = "早上第一个时间段")
+    private String morningOne;
+
+    @Schema(description = "早上第二个时间段")
+    private String morningTwo;
+
+    @Schema(description = "午餐")
+    private String lunch;
+
+    @Schema(description = "中午")
+    private String noon;
+
+    @Schema(description = "下午")
+    private String afternonn;
+
+    @Schema(description = "执行人")
+    private String excuteName;
+
+    @Schema(description = "执行记录")
+    private String excuteRecord;
+
+    @Schema(description = "机构id", example = "1")
+    private Long tenantId;
+}

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextPageReqVO.java

@@ -29,6 +29,9 @@ public class ElderlyBuildFloorActivityTextPageReqVO extends PageParam {
     @Schema(description = "记录月", example = "2024-10")
     private String recordMonth;
 
+    @Schema(description = "记录月范围")
+    private String[] recordMonthRange;
+
     @Schema(description = "机构id", example = "1")
     private Long tenantId;
 }

+ 4 - 24
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextRespVO.java

@@ -7,6 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
@@ -37,30 +38,6 @@ public class ElderlyBuildFloorActivityTextRespVO {
     @Schema(description = "长者姓名")
     private String elderName;
 
-    @Schema(description = "日期")
-    private String activityDate;
-
-    @Schema(description = "早上第一个时间段")
-    private String morningOne;
-
-    @Schema(description = "早上第二个时间段")
-    private String morningTwo;
-
-    @Schema(description = "午餐")
-    private String lunch;
-
-    @Schema(description = "中午")
-    private String noon;
-
-    @Schema(description = "下午")
-    private String afternonn;
-
-    @Schema(description = "执行人")
-    private String excuteName;
-
-    @Schema(description = "执行记录")
-    private String excuteRecord;
-
     @Schema(description = "记录时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = "GMT+8")
@@ -69,6 +46,9 @@ public class ElderlyBuildFloorActivityTextRespVO {
     @Schema(description = "机构id", example = "1")
     private Long tenantId;
 
+    @Schema(description = "明细")
+    private List<ElderlyBuildFloorActivityTextItemRespVO> items;
+
     @Schema(description = "创建时间")
     private LocalDateTime createTime;
 

+ 4 - 24
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyactivitytext/ElderlyBuildFloorActivityTextSaveReqVO.java

@@ -7,6 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
@@ -42,30 +43,6 @@ public class ElderlyBuildFloorActivityTextSaveReqVO {
     @NotNull(message = "长者姓名不能为空")
     private String elderName;
 
-    @Schema(description = "日期")
-    private String activityDate;
-
-    @Schema(description = "早上第一个时间段")
-    private String morningOne;
-
-    @Schema(description = "早上第二个时间段")
-    private String morningTwo;
-
-    @Schema(description = "午餐")
-    private String lunch;
-
-    @Schema(description = "中午")
-    private String noon;
-
-    @Schema(description = "下午")
-    private String afternonn;
-
-    @Schema(description = "执行人")
-    private String excuteName;
-
-    @Schema(description = "执行记录")
-    private String excuteRecord;
-
     @Schema(description = "记录时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "记录时间不能为空")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@@ -75,4 +52,7 @@ public class ElderlyBuildFloorActivityTextSaveReqVO {
     @Schema(description = "机构id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "机构id不能为空")
     private Long tenantId;
+
+    @Schema(description = "明细")
+    private List<ElderlyBuildFloorActivityTextItemSaveReqVO> items;
 }

+ 2 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/materialio/inventory/MaterialInventoryReportPageReqVO.java

@@ -15,8 +15,8 @@ public class MaterialInventoryReportPageReqVO extends PageParam {
     @Schema(description = "仓库ID", example = "2")
     private Long storeId;
 
-    @Schema(description = "月份(YYYY-MM)", required = true, example = "2025-07")
-    private String month;
+    @Schema(description = "月份范围(YYYY-MM),数组第0个为开始,第1个为结束,可不传结束", required = true, example = "[\"2025-07\",\"2025-08\"]")
+    private String[] months;
 
     @Schema(description = "关键字(物资编码/物资名称)", example = "A4打印纸")
     private String keyword;

+ 78 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/ElderlyNursingLogController.java

@@ -0,0 +1,78 @@
+package cn.iocoder.yudao.module.system.controller.admin.elderly;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogDetailRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogSaveReqVO;
+import cn.iocoder.yudao.module.system.service.elderly.ElderlyNursingLogService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Objects;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 长者护理记录")
+@RestController
+@RequestMapping("/elderly-nursing-log")
+@Validated
+public class ElderlyNursingLogController {
+
+    @Resource
+    private ElderlyNursingLogService nursingLogService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建长者护理记录")
+    public CommonResult<Long> create(@Valid @RequestBody ElderlyNursingLogSaveReqVO createReqVO) {
+        createReqVO.setTenantId(Objects.isNull(createReqVO.getTenantId())
+                ? TenantContextHolder.getTenantId() : createReqVO.getTenantId());
+        return success(nursingLogService.create(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新长者护理记录")
+    public CommonResult<Boolean> update(@Valid @RequestBody ElderlyNursingLogSaveReqVO updateReqVO) {
+        updateReqVO.setTenantId(Objects.isNull(updateReqVO.getTenantId())
+                ? TenantContextHolder.getTenantId() : updateReqVO.getTenantId());
+        nursingLogService.update(updateReqVO);
+        return success(Boolean.TRUE);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除长者护理记录")
+    @Parameter(name = "id", description = "记录编号", required = true)
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        nursingLogService.delete(id);
+        return success(Boolean.TRUE);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得长者护理记录")
+    @Parameter(name = "id", description = "记录编号", required = true, example = "1024")
+    public CommonResult<ElderlyNursingLogRespVO> get(@RequestParam("id") Long id) {
+        return success(nursingLogService.get(id));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得长者护理记录分页")
+    public CommonResult<PageResult<ElderlyNursingLogRespVO>> getPage(@Valid ElderlyNursingLogPageReqVO pageReqVO) {
+        pageReqVO.setTenantIds(Objects.isNull(pageReqVO.getTenantIds())
+                ? new Long[]{TenantContextHolder.getTenantId()} : pageReqVO.getTenantIds());
+        return success(nursingLogService.getPage(pageReqVO));
+    }
+
+    @GetMapping("/detail")
+    @Operation(summary = "获得长者护理记录详情")
+    @Parameter(name = "elderId", description = "长者编号", required = true, example = "1")
+    public CommonResult<ElderlyNursingLogDetailRespVO> getDetail(@RequestParam("elderId") Long elderId) {
+        return success(nursingLogService.getDetailByElderId(elderId));
+    }
+}

+ 31 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogDetailRespVO.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.system.controller.admin.elderly.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 长者护理记录详情 Response VO")
+@Data
+public class ElderlyNursingLogDetailRespVO {
+
+    @Schema(description = "表头信息")
+    private Header header;
+
+    @Schema(description = "护理记录列表")
+    private List<ElderlyNursingLogRespVO> records;
+
+    @Schema(description = "表头信息")
+    @Data
+    public static class Header {
+
+        @Schema(description = "长者姓名")
+        private String elderName;
+
+        @Schema(description = "床位号(完整床位名)")
+        private String bedName;
+
+        @Schema(description = "护理等级")
+        private String nurseLevelName;
+    }
+}

+ 29 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogPageReqVO.java

@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.controller.admin.elderly.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 长者护理记录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ElderlyNursingLogPageReqVO extends PageParam {
+
+    @Schema(description = "长者姓名")
+    private String elderName;
+
+    @Schema(description = "护理日期范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate[] nurseDate;
+
+    @Schema(description = "机构id数组")
+    private Long[] tenantIds;
+}

+ 45 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogRespVO.java

@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.system.controller.admin.elderly.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 长者护理记录 Response VO")
+@Data
+public class ElderlyNursingLogRespVO {
+
+    @Schema(description = "id", example = "1024")
+    private Long id;
+
+    @Schema(description = "长者id", example = "1")
+    private Long elderId;
+
+    @Schema(description = "长者姓名")
+    private String elderName;
+
+    @Schema(description = "床位号(完整床位名)")
+    private String bedName;
+
+    @Schema(description = "护理等级")
+    private String nurseLevelName;
+
+    @Schema(description = "护理计划项目id", example = "1")
+    private Long nursingPlanItemId;
+
+    @Schema(description = "图片")
+    private String image;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "护理日期")
+    private LocalDate nurseDate;
+
+    @Schema(description = "创建人")
+    private String creator;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+}

+ 35 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/elderly/vo/ElderlyNursingLogSaveReqVO.java

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.system.controller.admin.elderly.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+@Schema(description = "管理后台 - 长者护理记录新增/修改 Request VO")
+@Data
+public class ElderlyNursingLogSaveReqVO {
+
+    @Schema(description = "id", example = "1024")
+    private Long id;
+
+    @Schema(description = "护理计划项目id", example = "1")
+    private Long nursingPlanItemId;
+
+    @Schema(description = "长者id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "长者id不能为空")
+    private Long elderId;
+
+    @Schema(description = "图片")
+    private String image;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "护理日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "护理日期不能为空")
+    private LocalDate nurseDate;
+
+    @Schema(description = "机构id", example = "1")
+    private Long tenantId;
+}

+ 0 - 21
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/NursingInspectionController.java

@@ -3,11 +3,9 @@ package cn.iocoder.yudao.module.system.controller.admin.nursing;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyInspectionRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.*;
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingInspectionDO;
 import cn.iocoder.yudao.module.system.service.nursing.NursingInspectionService;
-import cn.iocoder.yudao.module.system.service.nursing.NursingLogService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import org.springframework.web.bind.annotation.*;
@@ -31,9 +29,6 @@ public class NursingInspectionController {
 
     @Resource
     private NursingInspectionService nursingInspectionService;
-    @Resource
-    private NursingLogService nursingLogService;
-
 
 
     @PostMapping("/create")
@@ -75,22 +70,6 @@ public class NursingInspectionController {
         return success(BeanUtils.toBean(pageResult, NursingInspectionRespVO.class));
     }
 
-
-    @GetMapping("/getInspectionRecords")
-    @Operation(summary = "移动端-巡检护理日志列表")
-    public CommonResult<List<NursingLogRespVO>> getInspectionRecords(NursingInspectionQueryVO queryVO) {
-        return success(nursingLogService.getInspectionRecords(queryVO));
-    }
-
-
-    @GetMapping("/getInspectionDetails")
-    @Operation(summary = "移动端-巡检护理日志详情")
-    @Parameter(name = "nursingLogId", description = "护理日志ID", required = true, example = "1024")
-    public CommonResult<List<ElderlyInspectionRespVO>> getInspectionDetails(@RequestParam("nursingLogId") Long nursingLogId){
-        return success(nursingLogService.getInspectionDetails(nursingLogId));
-    }
-
-
     @GetMapping("/mobile/getMobileNursingInspectionList")
     @Operation(summary = "移动端-获取巡检记录详情列表")
     public CommonResult<List<NursingInspectionDO>>  getMobileNursingInspectionList(@RequestParam("nursingLogId") Long nursingLogId){

+ 0 - 163
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/NursingLogController.java

@@ -1,163 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.nursing;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
-import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.*;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingInspectionDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRecordDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRemarksDO;
-import cn.iocoder.yudao.module.system.service.nursing.NursingLogService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-
-import org.springframework.validation.annotation.Validated;
-import io.swagger.v3.oas.annotations.tags.Tag;
-
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 护理日志")
-@RestController
-@RequestMapping("/elderly/nursingLog")
-@Validated
-public class NursingLogController {
-
-    @Resource
-    private NursingLogService nursingLogService;
-
-    @PostMapping("/supplementNursingLog")
-    @Operation(summary = "补录护理日志")
-    public CommonResult<Boolean> supplementNursingLog(@Valid @RequestBody NursingLogSaveReqVO createReqVO) {
-        nursingLogService.supplementNursingLog(createReqVO);
-        return success(true);
-    }
-
-    //
-//    @PutMapping("/update")
-//    @Operation(summary = "更新护理日志")
-//    @PreAuthorize("@ss.hasPermission('elderly:nursing-log:update')")
-//    public CommonResult<Boolean> updateNursingLog(@Valid @RequestBody NursingLogSaveReqVO updateReqVO) {
-//        nursingLogService.updateNursingLog(updateReqVO);
-//        return success(true);
-//    }
-//
-//    @DeleteMapping("/delete")
-//    @Operation(summary = "删除护理日志")
-//    @Parameter(name = "id", description = "编号", required = true)
-//    @PreAuthorize("@ss.hasPermission('elderly:nursing-log:delete')")
-//    public CommonResult<Boolean> deleteNursingLog(@RequestParam("id") Long id) {
-//        nursingLogService.deleteNursingLog(id);
-//        return success(true);
-//    }
-//
-    @GetMapping("/getNursingLogByTime")
-    @Operation(summary = "获取护理日志(按时间查询)")
-    @Parameters({@Parameter(name = "id", description = "护理日志ID", required = true, example = "1024"),
-            @Parameter(name = "type", description = "护理计划类型")})
-    public CommonResult<Map<String, List<NursingLogRecordRespVO>>> getNursingLogByTime(@RequestParam("id") Long id, @RequestParam(value = "type", required = false) Integer type) {
-        Map<String, List<NursingLogRecordRespVO>> dataMap = nursingLogService.getNursingLogByTime(id, type);
-        return success(dataMap);
-    }
-
-
-    @GetMapping("/getNursingLogByItem")
-    @Operation(summary = "获取护理日志(按项目查询)")
-    public CommonResult<List<Map<String, Object>>> getNursingLogByItem(@RequestParam("id") Long id
-            , @RequestParam(value = "type", required = false) Integer type
-            , @RequestParam(value = "caregiverName", required = false) String caregiverName
-            , @RequestParam(value = "nurseItemName", required = false) String nurseItemName) {
-        return success(nursingLogService.getNursingLogByItem(id, type, caregiverName, nurseItemName));
-    }
-
-
-    @GetMapping("/getDetails")
-    @Operation(summary = "补录详情")
-    @Parameters({@Parameter(name = "elderId", description = "长者ID", required = true, example = "1024"),
-            @Parameter(name = "type", description = "护理计划类型")})
-    public CommonResult<List<NursingPlanItemRespVO>> getDetails(@RequestParam("elderId") Long elderId,
-                                                                @RequestParam(value = "type", required = false) Integer type
-            , @RequestParam("nursingLogId") Long nursingLogId) {
-        return success(nursingLogService.getDetails(elderId, type,nursingLogId));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得护理日志分页")
-    public CommonResult<PageResult<NursingLogDO>> getNursingLogPage(@Valid NursingLogPageReqVO pageReqVO) {
-        PageResult<NursingLogDO> pageResult = nursingLogService.getNursingLogPage(pageReqVO);
-        return success(pageResult);
-    }
-
-
-    @PostMapping("/mobile/addNurseLogDetail")
-    @Operation(summary = "移动端-移动端新增护理日志")
-    public CommonResult<Boolean> addNurseLogDetail(@RequestBody NursingLogRecordDO nursingLogRecordDO) {
-        nursingLogService.addNurseLogDetail(nursingLogRecordDO);
-        return success(true);
-    }
-
-
-    @PostMapping("/mobile/addNursingRemarks")
-    @Operation(summary = "移动端-增加护理日志备注记录")
-    public CommonResult<Boolean> addNursingRemarks(@RequestBody NursingLogRemarksDO logRemarksDO) {
-        nursingLogService.addNursingRemarks(logRemarksDO);
-        return success(true);
-    }
-
-
-    @GetMapping("/mobile/getNursingRemarks")
-    @Operation(summary = "移动端-获取护理日志备注记录")
-    @Parameter(name = "nursingLogId", description = "护理日志ID", required = true, example = "1024")
-    public CommonResult<List<NursingLogRemarksDO>> getNursingRemarks(@RequestParam("nursingLogId") Long nursingLogId) {
-        return success(nursingLogService.getNursingRemarks(nursingLogId));
-    }
-
-
-    @GetMapping("/mobile/getMobileNursingLog")
-    @Operation(summary = "移动端-获取护理日志")
-    public CommonResult<List<NursingLogDO>> getMobileNursingLog(@RequestParam(value = "elderName", required = false) String elderName, @RequestParam(value = "bedId", required = false) Long bedId) {
-        return success(nursingLogService.getMobileNursingLog(elderName, bedId));
-    }
-
-
-    @GetMapping("/mobile/getNursingRecordList")
-    @Operation(summary = "移动端-护理记录列表")
-    @Parameter(name = "nursingLogId", description = "护理日志ID", required = true, example = "1024")
-    public CommonResult<List<NursingLogRecordDO>> getNursingRecordList(@RequestParam("nursingLogId") Long nursingLogId) {
-        return success(nursingLogService.getNursingRecordList(nursingLogId));
-    }
-
-    @GetMapping("/getNursingItemPlanList")
-    @Operation(summary = "移动端-护理计划列表")
-    @Parameter(name = "nursingLogId", description = "护理日志ID", required = true, example = "1024")
-    public CommonResult<Map<String, List<NursingPlanItemRespVO>>> getNursingItemPlanList(@RequestParam("nursingLogId") Long nursingLogId) {
-        return success(nursingLogService.getNursingItemPlanList(nursingLogId));
-    }
-
-
-
-
-
-//    @GetMapping("/export-excel")
-//    @Operation(summary = "导出护理日志 Excel")
-//    @PreAuthorize("@ss.hasPermission('elderly:nursing-log:export')")
-//    @ApiAccessLog(operateType = EXPORT)
-//    public void exportNursingLogExcel(@Valid NursingLogPageReqVO pageReqVO,
-//              HttpServletResponse response) throws IOException {
-//        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-//        List<NursingLogDO> list = nursingLogService.getNursingLogPage(pageReqVO).getList();
-//        // 导出 Excel
-//        ExcelUtils.write(response, "护理日志.xls", "数据", NursingLogRespVO.class,
-//                        BeanUtils.toBean(list, NursingLogRespVO.class));
-//    }
-
-}

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/NursingPlanController.java

@@ -13,6 +13,7 @@ import io.swagger.v3.oas.annotations.Parameter;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
 import javax.validation.Valid;
 
 import org.springframework.validation.annotation.Validated;
@@ -84,6 +85,8 @@ public class NursingPlanController {
 
     @GetMapping("/getNursingPlanByElderId")
     @Operation(summary = "根据长者ID查询护理计划")
+    @TenantIgnore
+    @PermitAll
     public CommonResult<List<NursingPlanRespVO>> getNursingPlanByElderId(@RequestParam("elderId") Long elderId) {
         return success(nursingPlanService.getNursingPlanByElderId(elderId));
     }

+ 0 - 42
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogPageReqVO.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.nursing.vo;
-
-import lombok.*;
-
-import java.time.LocalDate;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 护理日志分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class NursingLogPageReqVO extends PageParam {
-
-    @Schema(description = "长者ID", example = "22286")
-    private Long elderId;
-
-    @Schema(description = "长者名称", example = "王五")
-    private String elderName;
-
-    @Schema(description = "护理日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDate[] nursingDate;
-
-    @Schema(description = "护理次数", example = "26478")
-    private Integer count;
-
-    @Schema(description = "床位名称", example = "芋艿")
-    private String bedName;
-
-    @Schema(description = "护理等级")
-    private String nursingGrade;
-
-    @Schema(description = "系统类型", example = "1")
-    private Integer orgType;
-
-}

+ 0 - 72
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogRecordRespVO.java

@@ -1,72 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.nursing.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
-
-@Schema(description = "管理后台 - 长者护理日志记录 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class NursingLogRecordRespVO {
-
-    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10113")
-    @ExcelProperty("主键ID")
-    private Long id;
-
-    @Schema(description = "护理日志ID", example = "32153")
-    @ExcelProperty("护理日志ID")
-    private Long nursingLogId;
-
-    @Schema(description = "护理计划项ID")
-    @ExcelProperty("护理计划项ID")
-    private Long nursingPlanItem;
-
-    @Schema(description = "护理项目名称", example = "张三")
-    @ExcelProperty("护理项目名称")
-    private String nurseItemName;
-
-    @Schema(description = "护理项目图片")
-    private String nurseItemImage;
-
-    @Schema(description = "分类ID", example = "17339")
-    @ExcelProperty("分类ID")
-    private Long categoryId;
-
-    @Schema(description = "分类名称", example = "芋艿")
-    @ExcelProperty("分类名称")
-    private String categoryName;
-
-//    @Schema(description = "频次")
-//    @ExcelProperty("频次")
-//    private Integer frequency;
-//
-//    @Schema(description = "频次单位")
-//    @ExcelProperty("频次单位")
-//    private String frequencyUnit;
-//
-//    @Schema(description = "操作方式")
-//    @ExcelProperty("操作方式")
-//    private String operatingMode;
-
-    @Schema(description = "护理时间")
-    @ExcelProperty("护理时间")
-    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
-    private LocalDateTime nursingTime;
-
-    @Schema(description = "护理人")
-    @ExcelProperty("护理人")
-    private String caregiver;
-
-//    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @ExcelProperty("创建时间")
-//    private LocalDateTime createTime;
-
-}

+ 0 - 70
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogRespVO.java

@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.nursing.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
-
-@Schema(description = "管理后台 - 护理日志 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class NursingLogRespVO {
-
-    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16038")
-    @ExcelProperty("主键ID")
-    private Long id;
-
-    @Schema(description = "长者ID", example = "22286")
-    @ExcelProperty("长者ID")
-    private Long elderId;
-
-    @Schema(description = "长者名称", example = "王五")
-    @ExcelProperty("长者名称")
-    private String elderName;
-
-    @Schema(description = "护理次数", example = "26478")
-    @ExcelProperty("护理次数")
-    private Integer count;
-
-    @Schema(description = "护理等级")
-    @ExcelProperty("护理等级")
-    private String nursingGrade;
-
-    @Schema(description = "护理日期")
-    @ExcelProperty("护理日期")
-    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY)
-    private LocalDate nursingDate;
-
-    @Schema(description = "护理员姓名")
-    private String nurseName;
-
-    @Schema(description = "床位ID", example = "2956")
-    @ExcelProperty("床位ID")
-    private Long bedId;
-
-    @Schema(description = "床位全名称", example = "王五")
-    @ExcelProperty("床位全名称")
-    private String bedName;
-
-    @Schema(description = "在院状态,0:外出  1:在院", example = "1")
-    @ExcelProperty("在院状态,0:外出  1:在院")
-    private Integer inHospitalStatus;
-
-    @Schema(description = "护理状态,0:未护理  1:已护理", example = "1")
-    @ExcelProperty("护理状态,0:未护理  1:已护理")
-    private Integer nursingStatus;
-
-    @Schema(description = "系统类型", example = "1")
-    @ExcelProperty("系统类型")
-    private String orgType;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-}

+ 0 - 42
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingLogSaveReqVO.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.nursing.vo;
-
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRecordDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 护理日志新增/修改 Request VO")
-@Data
-public class NursingLogSaveReqVO {
-
-    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16038")
-    private Long id;
-
-    @Schema(description = "长者ID", example = "22286")
-    private Long elderId;
-
-    @Schema(description = "长者名称", example = "王五")
-    private String elderName;
-
-    @Schema(description = "护理日期")
-    private LocalDateTime nursingDate;
-
-    @Schema(description = "护理次数", example = "26478")
-    private Integer count;
-
-    @Schema(description = "床位名称", example = "芋艿")
-    private String bedName;
-
-    @Schema(description = "护理等级")
-    private String nursingGrade;
-
-    @Schema(description = "系统类型", example = "1")
-    private Integer orgType;
-
-    @Schema(description = "护理补录记录")
-    private List<NursingLogRecordDO> nursingLogRecords;
-
-}

+ 0 - 73
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/nursing/vo/NursingPlanItemRespVO.java

@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.nursing.vo;
-
-
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRecordDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.util.List;
-
-
-@Data
-public class NursingPlanItemRespVO {
-
-    /**
-     * 主键ID
-     */
-    private Long id;
-    /**
-     * 护理计划ID
-     */
-    @Schema(description = "护理计划ID")
-    private Long nursingPlanId;
-    /**
-     * 护理项目ID
-     */
-    @Schema(description = "护理项目ID")
-    private Long nurseItemId;
-    /**
-     * 护理项目名称
-     */
-    @Schema(description = "护理项目名称")
-    private String nurseItemName;
-    /**
-     * 护理项目图片
-     */
-    @Schema(description = "护理项目图片")
-    private String nurseItemImage;
-    /**
-     * 分类ID
-     */
-    @Schema(description = "分类ID")
-    private Long categoryId;
-    /**
-     * 分类名称
-     */
-    @Schema(description = "分类名称")
-    private String categoryName;
-    /**
-     * 频次
-     */
-    @Schema(description = "频次")
-    private Integer frequency;
-    /**
-     * 频次单位
-     */
-    @Schema(description = "频次单位")
-    private String frequencyUnit;
-    /**
-     * 操作方式
-     */
-    @Schema(description = "操作方式")
-    private String operatingMode;
-
-    @Schema(description = "实际护理次数")
-    private Integer actualFrequency;
-
-    @Schema(description = "实际巡检次数")
-    private Integer inspectionCount = 0;
-
-    @Schema(description = "护理日志记录")
-    private List<NursingLogRecordDO> records;
-
-}

+ 9 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorActivityImageDO.java

@@ -97,6 +97,12 @@ public class ElderlyBuildFloorActivityImageDO extends BaseNoDeleteDO {
     @Schema(description = "活动图片")
     private String activityImage;
 
+    /**
+     * 图片备注
+     */
+    @Schema(description = "图片备注")
+    private String activityImageRemark;
+
     /**
      * 机构id
      */
@@ -106,3 +112,6 @@ public class ElderlyBuildFloorActivityImageDO extends BaseNoDeleteDO {
 
 
 
+
+
+

+ 1 - 56
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorActivityTextDO.java

@@ -5,15 +5,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
 /**
  * 楼层活动文字记录 DO
  *
@@ -21,12 +17,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
  */
 @TableName("elderly_build_floor_activity_text")
 @Data
-@EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class ElderlyBuildFloorActivityTextDO extends BaseNoDeleteDO {
+public class ElderlyBuildFloorActivityTextDO {
 
     /**
      * 主键ID
@@ -65,60 +60,10 @@ public class ElderlyBuildFloorActivityTextDO extends BaseNoDeleteDO {
     @Schema(description = "长者姓名")
     private String elderName;
 
-    /**
-     * 日期
-     */
-    @Schema(description = "日期")
-    private String activityDate;
-
-    /**
-     * 早上第一个时间段
-     */
-    @Schema(description = "早上第一个时间段")
-    private String morningOne;
-
-    /**
-     * 早上第二个时间段
-     */
-    @Schema(description = "早上第二个时间段")
-    private String morningTwo;
-
-    /**
-     * 午餐
-     */
-    @Schema(description = "午餐")
-    private String lunch;
-
-    /**
-     * 中午
-     */
-    @Schema(description = "中午")
-    private String noon;
-
-    /**
-     * 下午
-     */
-    @Schema(description = "下午")
-    private String afternonn;
-
-    /**
-     * 执行人
-     */
-    @Schema(description = "执行人")
-    private String excuteName;
-
-    /**
-     * 执行记录
-     */
-    @Schema(description = "执行记录")
-    private String excuteRecord;
-
     /**
      * 记录时间
      */
     @Schema(description = "记录时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = "GMT+8")
     private Date recordTime;
 
     /**

+ 90 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyBuildFloorActivityTextItemDO.java

@@ -0,0 +1,90 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.biz;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseNoDeleteDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * 楼层活动文字记录明细 DO
+ *
+ * @author 系统管理员
+ */
+@TableName("elderly_build_floor_activity_text_item")
+@Data
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ElderlyBuildFloorActivityTextItemDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 文字记录表头id
+     */
+    @Schema(description = "文字记录表头id")
+    @TableField("text_id")
+    private Long textId;
+
+    /**
+     * 日期
+     */
+    @Schema(description = "日期")
+    private String activityDate;
+
+    /**
+     * 早上第一个时间段
+     */
+    @Schema(description = "早上第一个时间段")
+    private String morningOne;
+
+    /**
+     * 早上第二个时间段
+     */
+    @Schema(description = "早上第二个时间段")
+    private String morningTwo;
+
+    /**
+     * 午餐
+     */
+    @Schema(description = "午餐")
+    private String lunch;
+
+    /**
+     * 中午
+     */
+    @Schema(description = "中午")
+    private String noon;
+
+    /**
+     * 下午
+     */
+    @Schema(description = "下午")
+    private String afternonn;
+
+    /**
+     * 执行人
+     */
+    @Schema(description = "执行人")
+    private String excuteName;
+
+    /**
+     * 执行记录
+     */
+    @Schema(description = "执行记录")
+    private String excuteRecord;
+
+    /**
+     * 机构id
+     */
+    @Schema(description = "机构id")
+    private Long tenantId;
+}

+ 0 - 87
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/NursingLogDO.java

@@ -1,87 +0,0 @@
-package cn.iocoder.yudao.module.system.dal.dataobject.biz;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.*;
-
-import java.time.LocalDate;
-import java.util.*;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
-
-/**
- * 护理日志 DO
- *
- * @author 系统管理员
- */
-@TableName("elderly_nursing_log")
-@KeySequence("elderly_nursing_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class NursingLogDO extends BaseDO {
-
-    /**
-     * 主键ID
-     */
-    @TableId
-    private Long id;
-    /**
-     * 长者ID
-     */
-    private Long elderId;
-    /**
-     * 长者名称
-     */
-    private String elderName;
-    /**
-     * 护理日期
-     */
-    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY)
-    private LocalDate nursingDate;
-    /**
-     * 护理次数
-     */
-    private Integer count;
-    /**
-     * 床位ID
-     */
-    private Long bedId;
-    /**
-     * 床位名称
-     */
-    private String bedName;
-    /**
-     * 护理等级
-     */
-    private String nursingGrade;
-    /**
-     * 系统类型
-     */
-    private Integer orgType;
-
-    /**
-     * 长者在住院状态
-     */
-    private Integer inHospitalStatus;
-
-    /**
-     * 护理状态
-     */
-    private Integer nursingStatus;
-//    /**
-//     * 护理类型
-//     */
-//    private String type;
-
-    private Long tenantId;
-
-    @TableField(exist = false)
-    private String elderImage;
-
-}

+ 0 - 97
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/NursingLogRecordDO.java

@@ -1,97 +0,0 @@
-package cn.iocoder.yudao.module.system.dal.dataobject.biz;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
-
-/**
- * 长者护理日志记录 DO
- *
- * @author 系统管理员
- */
-@TableName("elderly_nursing_log_record")
-@KeySequence("elderly_nursing_log_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class NursingLogRecordDO extends BaseDO {
-
-    /**
-     * 主键ID
-     */
-    @TableId
-    private Long id;
-    /**
-     * 护理日志ID
-     */
-    private Long nursingLogId;
-    /**
-     * 护理计划项ID
-     */
-    private Long nursingPlanItemId;
-    /**
-     * 护理项目名称
-     */
-    private String nurseItemName;
-    /**
-     * 护理项目图片
-     */
-    private String nurseItemImage;
-    /**
-     * 分类ID
-     */
-    private Long categoryId;
-    /**
-     * 分类名称
-     */
-    private String categoryName;
-    /**
-     * 频次
-     */
-    private Integer frequency;
-    /**
-     * 频次单位
-     */
-    private String frequencyUnit;
-    /**
-     * 操作方式
-     */
-    private String operatingMode;
-    /**
-     * 护理时间
-     */
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-//    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
-    private LocalDateTime nursingTime;
-
-    /**
-     * 护理ID
-     */
-    private Long caregiverId;
-
-    /**
-     * 护理人
-     */
-    private String caregiver;
-    /**
-     * 护理类型
-     */
-    private String type;
-    /**
-     * 操作方式
-     */
-    private Integer dataSource;
-
-}

+ 0 - 45
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/NursingLogRemarksDO.java

@@ -1,45 +0,0 @@
-package cn.iocoder.yudao.module.system.dal.dataobject.biz;
-
-import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-
-/**
- * 护理日志备注记录 DO
- *
- * @author 系统管理员
- */
-@TableName("nursing_log_remarks")
-@KeySequence("nursing_log_remarks_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class NursingLogRemarksDO{
-
-    /**
-     * 主键ID
-     */
-    @TableId
-    private Long id;
-    /**
-     * 护理日志ID
-     */
-    private Long nursingLogId;
-    /**
-     * 备注内容
-     */
-    private String content;
-    /**
-     * 记录时间
-     */
-    private Date createdTime;
-    /**
-     * 记录人
-     */
-    private String createdBy;
-
-}

+ 44 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/elderly/ElderlyNursingLogDO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.elderly;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseNoDeleteDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDate;
+
+/**
+ * 长者护理记录 DO
+ */
+@TableName("elderly_nursing_log")
+@KeySequence("elderly_nursing_log_seq")
+@Data
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ElderlyNursingLogDO extends BaseNoDeleteDO {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /** 护理计划项目id */
+    private Long nursingPlanItemId;
+
+    /** 长者id */
+    private Long elderId;
+
+    /** 图片 */
+    private String image;
+
+    /** 备注 */
+    private String remark;
+
+    /** 护理日期 */
+    private LocalDate nurseDate;
+
+    /** 机构id */
+    private Long tenantId;
+}

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityImageMapper.java

@@ -28,3 +28,6 @@ public interface ElderlyBuildFloorActivityImageMapper extends BaseMapperX<Elderl
 
 
 
+
+
+

+ 44 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityTextItemMapper.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.system.dal.mysql.biz;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyBuildFloorActivityTextItemDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 楼层活动文字记录明细 Mapper
+ *
+ * @author 系统管理员
+ */
+@Mapper
+public interface ElderlyBuildFloorActivityTextItemMapper extends BaseMapperX<ElderlyBuildFloorActivityTextItemDO> {
+
+    default List<ElderlyBuildFloorActivityTextItemDO> selectByTextId(Long textId) {
+        if (textId == null) {
+            return Collections.emptyList();
+        }
+        return selectList(new LambdaQueryWrapperX<ElderlyBuildFloorActivityTextItemDO>()
+                .eq(ElderlyBuildFloorActivityTextItemDO::getTextId, textId)
+                .orderByAsc(ElderlyBuildFloorActivityTextItemDO::getId));
+    }
+
+    default List<ElderlyBuildFloorActivityTextItemDO> selectByTextIds(List<Long> textIds) {
+        if (textIds == null || textIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return selectList(new LambdaQueryWrapperX<ElderlyBuildFloorActivityTextItemDO>()
+                .in(ElderlyBuildFloorActivityTextItemDO::getTextId, textIds)
+                .orderByAsc(ElderlyBuildFloorActivityTextItemDO::getId));
+    }
+
+    default void deleteByTextId(Long textId) {
+        if (textId == null) {
+            return;
+        }
+        delete(new LambdaQueryWrapperX<ElderlyBuildFloorActivityTextItemDO>()
+                .eq(ElderlyBuildFloorActivityTextItemDO::getTextId, textId));
+    }
+}

+ 1 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityTextMapper.java

@@ -21,6 +21,7 @@ public interface ElderlyBuildFloorActivityTextMapper extends BaseMapperX<Elderly
                 .eqIfPresent(ElderlyBuildFloorActivityTextDO::getBuidId, reqVO.getBuidId())
                 .eqIfPresent(ElderlyBuildFloorActivityTextDO::getFloorId, reqVO.getFloorId())
                 .eqIfPresent(ElderlyBuildFloorActivityTextDO::getRecordMonth, reqVO.getRecordMonth())
+                .betweenIfPresent(ElderlyBuildFloorActivityTextDO::getRecordMonth, reqVO.getRecordMonthRange())
                 .eqIfPresent(ElderlyBuildFloorActivityTextDO::getTenantId, reqVO.getTenantId())
                 .orderByDesc(ElderlyBuildFloorActivityTextDO::getId));
     }

+ 0 - 33
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/NursingLogMapper.java

@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.system.dal.mysql.biz;
-
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingLogPageReqVO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogDO;
-import org.apache.ibatis.annotations.Mapper;
-
-
-/**
- * 护理日志 Mapper
- *
- * @author 系统管理员
- */
-@Mapper
-public interface NursingLogMapper extends BaseMapperX<NursingLogDO> {
-
-    default PageResult<NursingLogDO> selectPage(NursingLogPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<NursingLogDO>()
-                .eqIfPresent(NursingLogDO::getElderId, reqVO.getElderId())
-                .likeIfPresent(NursingLogDO::getElderName, reqVO.getElderName())
-                .betweenIfPresent(NursingLogDO::getNursingDate, reqVO.getNursingDate())
-                .eqIfPresent(NursingLogDO::getCount, reqVO.getCount())
-                .likeIfPresent(NursingLogDO::getBedName, reqVO.getBedName())
-                .eqIfPresent(NursingLogDO::getNursingGrade, reqVO.getNursingGrade())
-                .eqIfPresent(NursingLogDO::getOrgType, reqVO.getOrgType())
-                .betweenIfPresent(NursingLogDO::getNursingDate,reqVO.getNursingDate())
-                .orderByDesc(NursingLogDO::getNursingDate));
-    }
-
-}

+ 0 - 33
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/NursingLogRecordMapper.java

@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.system.dal.mysql.biz;
-
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRecordDO;
-import org.apache.ibatis.annotations.Mapper;
-
-
-/**
- * 长者护理日志记录 Mapper
- *
- * @author 系统管理员
- */
-@Mapper
-public interface NursingLogRecordMapper extends BaseMapperX<NursingLogRecordDO> {
-
-//    default PageResult<NursingLogRecordDO> selectPage(NursingLogRecordPageReqVO reqVO) {
-//        return selectPage(reqVO, new LambdaQueryWrapperX<NursingLogRecordDO>()
-//                .eqIfPresent(NursingLogRecordDO::getNursingLogId, reqVO.getNursingLogId())
-//                .eqIfPresent(NursingLogRecordDO::getNursingPlanItem, reqVO.getNursingPlanItem())
-//                .likeIfPresent(NursingLogRecordDO::getNurseItemName, reqVO.getNurseItemName())
-//                .eqIfPresent(NursingLogRecordDO::getCategoryId, reqVO.getCategoryId())
-//                .likeIfPresent(NursingLogRecordDO::getCategoryName, reqVO.getCategoryName())
-//                .eqIfPresent(NursingLogRecordDO::getFrequency, reqVO.getFrequency())
-//                .eqIfPresent(NursingLogRecordDO::getFrequencyUnit, reqVO.getFrequencyUnit())
-//                .eqIfPresent(NursingLogRecordDO::getOperatingMode, reqVO.getOperatingMode())
-//                .betweenIfPresent(NursingLogRecordDO::getNursingTime, reqVO.getNursingTime())
-//                .eqIfPresent(NursingLogRecordDO::getCaregiver, reqVO.getCaregiver())
-//                .betweenIfPresent(NursingLogRecordDO::getCreateTime, reqVO.getCreateTime())
-//                .orderByDesc(NursingLogRecordDO::getId));
-//    }
-
-}

+ 0 - 25
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/NursingLogRemarksMapper.java

@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.module.system.dal.mysql.biz;
-
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRemarksDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 护理日志备注记录 Mapper
- *
- * @author 系统管理员
- */
-@Mapper
-public interface NursingLogRemarksMapper extends BaseMapperX<NursingLogRemarksDO> {
-
-//    default PageResult<LogRemarksDO> selectPage(LogRemarksPageReqVO reqVO) {
-//        return selectPage(reqVO, new LambdaQueryWrapperX<LogRemarksDO>()
-//                .eqIfPresent(LogRemarksDO::getNursingLogId, reqVO.getNursingLogId())
-//                .eqIfPresent(LogRemarksDO::getContent, reqVO.getContent())
-//                .betweenIfPresent(LogRemarksDO::getCreatedTime, reqVO.getCreatedTime())
-//                .eqIfPresent(LogRemarksDO::getCreatedBy, reqVO.getCreatedBy())
-//                .orderByDesc(LogRemarksDO::getId));
-//    }
-
-}

+ 33 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/elderly/ElderlyNursingLogMapper.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.system.dal.mysql.elderly;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.elderly.ElderlyNursingLogDO;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 长者护理记录 Mapper
+ */
+@Mapper
+public interface ElderlyNursingLogMapper extends BaseMapperX<ElderlyNursingLogDO> {
+
+    default PageResult<ElderlyNursingLogDO> selectPage(ElderlyNursingLogPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ElderlyNursingLogDO>()
+                .betweenIfPresent(ElderlyNursingLogDO::getNurseDate, reqVO.getNurseDate())
+                .inIfPresent(ElderlyNursingLogDO::getTenantId, reqVO.getTenantIds())
+                .orderByDesc(ElderlyNursingLogDO::getNurseDate)
+                .orderByDesc(ElderlyNursingLogDO::getId));
+    }
+
+    default List<ElderlyNursingLogDO> selectByElderId(Long elderId) {
+        return selectList(new LambdaQueryWrapper<ElderlyNursingLogDO>()
+                .eq(ElderlyNursingLogDO::getElderId, elderId)
+                .orderByDesc(ElderlyNursingLogDO::getNurseDate)
+                .orderByDesc(ElderlyNursingLogDO::getId));
+    }
+}

+ 1 - 38
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/NurseLogSyncJob.java

@@ -2,20 +2,11 @@ package cn.iocoder.yudao.module.system.job;
 
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingPlanDO;
-import cn.iocoder.yudao.module.system.service.biz.ElderlyInfoService;
-import cn.iocoder.yudao.module.system.service.nursing.NursingLogService;
-import cn.iocoder.yudao.module.system.service.nursing.NursingPlanService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.time.LocalDate;
-import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 每天生成护理日志
@@ -25,40 +16,12 @@ import java.util.stream.Collectors;
 public class NurseLogSyncJob implements JobHandler {
 
 
-    @Resource
-    private NursingLogService nursingLogService;
-    @Resource
-    private ElderlyInfoService elderlyInfoService;
-    @Resource
-    private NursingPlanService nursingPlanService;
 
     @Override
     @TenantIgnore
     public String execute(String param) throws Exception {
         log.info("护理日志记录定时器开始执行..........................");
-        List<NursingPlanDO> nursingPlanList = nursingPlanService.selectAll();
-
-        Map<Long, List<NursingPlanDO>> groupMap = nursingPlanList.stream()
-                .collect(Collectors.groupingBy(
-                        NursingPlanDO::getElderId, // 根据长者ID分组
-                        Collectors.collectingAndThen(
-                                Collectors.toList(), // 先收集成列表
-                                list -> list.stream() // 然后对流进行操作
-                                        .sorted(Comparator.comparing(NursingPlanDO::getEffectiveDate)) // 根据时间排序
-                                        .collect(Collectors.toList()) // 收集回列表
-                        )
-                ));
-
-        for (Long elderId : groupMap.keySet()) {
-            List<NursingPlanDO> nursingPlans = groupMap.get(elderId);
-            NursingPlanDO nursingPlanDO = nursingPlans.stream().findFirst().get();
-            ElderlyInfoDO elderlyInfo = elderlyInfoService.selectByIdTenantIgnore(elderId);
-            LocalDate localDate = nursingPlanDO.getEffectiveDate().plusDays(1);  //当天的已经生成,从后面一天开始生成
-            if (elderlyInfo != null && elderlyInfo.getInStatus() == 1 && LocalDate.now().isAfter(localDate)) {
-                //创建护理日志
-                nursingLogService.createNursingLog(nursingPlanDO);
-            }
-        }
+        // NursingLog 模块已移除,跳过创建护理日志
         log.info("护理日志记录定时器执行结束..........................");
         return null;
     }

+ 2 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorActivityTextService.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytex
 import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext.ElderlyBuildFloorActivityTextSaveReqVO;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 楼层活动文字记录 Service 接口
@@ -20,7 +21,7 @@ public interface ElderlyBuildFloorActivityTextService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createElderlyBuildFloorActivityText(@Valid ElderlyBuildFloorActivityTextSaveReqVO createReqVO);
+    Boolean createElderlyBuildFloorActivityText(@Valid ElderlyBuildFloorActivityTextSaveReqVO createReqVO);
 
     /**
      * 更新楼层活动文字记录

+ 70 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyBuildFloorActivityTextServiceImpl.java

@@ -2,16 +2,27 @@ package cn.iocoder.yudao.module.system.service.biz;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext.ElderlyBuildFloorActivityTextItemRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext.ElderlyBuildFloorActivityTextItemSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext.ElderlyBuildFloorActivityTextPageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext.ElderlyBuildFloorActivityTextRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyactivitytext.ElderlyBuildFloorActivityTextSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyBuildFloorActivityTextDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyBuildFloorActivityTextItemDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyBuildFloorActivityTextItemMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyBuildFloorActivityTextMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.COMMON_NOT_FOUND;
 
@@ -27,23 +38,33 @@ public class ElderlyBuildFloorActivityTextServiceImpl implements ElderlyBuildFlo
     @Resource
     private ElderlyBuildFloorActivityTextMapper elderlyBuildFloorActivityTextMapper;
 
+    @Resource
+    private ElderlyBuildFloorActivityTextItemMapper textItemMapper;
+
     @Override
-    public Long createElderlyBuildFloorActivityText(ElderlyBuildFloorActivityTextSaveReqVO createReqVO) {
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean createElderlyBuildFloorActivityText(ElderlyBuildFloorActivityTextSaveReqVO createReqVO) {
         ElderlyBuildFloorActivityTextDO record = BeanUtils.toBean(createReqVO, ElderlyBuildFloorActivityTextDO.class);
         elderlyBuildFloorActivityTextMapper.insert(record);
-        return record.getId();
+        saveItems(record.getId(), createReqVO.getItems());
+        return true;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateElderlyBuildFloorActivityText(ElderlyBuildFloorActivityTextSaveReqVO updateReqVO) {
         validateElderlyBuildFloorActivityTextExists(updateReqVO.getId());
         ElderlyBuildFloorActivityTextDO updateObj = BeanUtils.toBean(updateReqVO, ElderlyBuildFloorActivityTextDO.class);
         elderlyBuildFloorActivityTextMapper.updateById(updateObj);
+        textItemMapper.deleteByTextId(updateReqVO.getId());
+        saveItems(updateReqVO.getId(), updateReqVO.getItems());
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void deleteElderlyBuildFloorActivityText(Long id) {
         validateElderlyBuildFloorActivityTextExists(id);
+        textItemMapper.deleteByTextId(id);
         elderlyBuildFloorActivityTextMapper.deleteById(id);
     }
 
@@ -53,13 +74,17 @@ public class ElderlyBuildFloorActivityTextServiceImpl implements ElderlyBuildFlo
         if (record == null) {
             throw exception(COMMON_NOT_FOUND);
         }
-        return BeanUtils.toBean(record, ElderlyBuildFloorActivityTextRespVO.class);
+        ElderlyBuildFloorActivityTextRespVO respVO = BeanUtils.toBean(record, ElderlyBuildFloorActivityTextRespVO.class);
+        respVO.setItems(getItems(record.getId()));
+        return respVO;
     }
 
     @Override
     public PageResult<ElderlyBuildFloorActivityTextRespVO> getElderlyBuildFloorActivityTextPage(ElderlyBuildFloorActivityTextPageReqVO pageReqVO) {
         PageResult<ElderlyBuildFloorActivityTextDO> pageResult = elderlyBuildFloorActivityTextMapper.selectPage(pageReqVO);
-        return new PageResult<>(BeanUtils.toBean(pageResult.getList(), ElderlyBuildFloorActivityTextRespVO.class), pageResult.getTotal());
+        List<ElderlyBuildFloorActivityTextRespVO> respList = BeanUtils.toBean(pageResult.getList(), ElderlyBuildFloorActivityTextRespVO.class);
+        fillItems(respList);
+        return new PageResult<>(respList, pageResult.getTotal());
     }
 
     private void validateElderlyBuildFloorActivityTextExists(Long id) {
@@ -67,5 +92,45 @@ public class ElderlyBuildFloorActivityTextServiceImpl implements ElderlyBuildFlo
             throw exception(COMMON_NOT_FOUND);
         }
     }
-}
 
+    private void saveItems(Long textId, List<ElderlyBuildFloorActivityTextItemSaveReqVO> items) {
+        if (items == null || items.isEmpty()) {
+            return;
+        }
+        List<ElderlyBuildFloorActivityTextItemDO> saveItems = new ArrayList<>();
+        for (ElderlyBuildFloorActivityTextItemSaveReqVO item : items) {
+            ElderlyBuildFloorActivityTextItemDO itemDO = BeanUtils.toBean(item, ElderlyBuildFloorActivityTextItemDO.class);
+            itemDO.setTextId(textId);
+            saveItems.add(itemDO);
+        }
+        textItemMapper.insertBatch(saveItems);
+    }
+
+    private List<ElderlyBuildFloorActivityTextItemRespVO> getItems(Long textId) {
+        List<ElderlyBuildFloorActivityTextItemDO> items = textItemMapper.selectByTextId(textId);
+        if (items.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return BeanUtils.toBean(items, ElderlyBuildFloorActivityTextItemRespVO.class);
+    }
+
+    private void fillItems(List<ElderlyBuildFloorActivityTextRespVO> respList) {
+        if (respList == null || respList.isEmpty()) {
+            return;
+        }
+        List<Long> ids = respList.stream().map(ElderlyBuildFloorActivityTextRespVO::getId).collect(Collectors.toList());
+        List<ElderlyBuildFloorActivityTextItemDO> items = textItemMapper.selectByTextIds(ids);
+        if (items.isEmpty()) {
+            return;
+        }
+        Map<Long, List<ElderlyBuildFloorActivityTextItemRespVO>> itemMap = items.stream()
+                .collect(Collectors.groupingBy(
+                        ElderlyBuildFloorActivityTextItemDO::getTextId,
+                        Collectors.mapping(
+                                item -> BeanUtils.toBean(item, ElderlyBuildFloorActivityTextItemRespVO.class),
+                                Collectors.toList())));
+        for (ElderlyBuildFloorActivityTextRespVO resp : respList) {
+            resp.setItems(itemMap.getOrDefault(resp.getId(), Collections.emptyList()));
+        }
+    }
+}

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyInfoServiceImpl.java

@@ -1488,7 +1488,7 @@ public class ElderlyInfoServiceImpl implements ElderlyInfoService {
         }
 
         LocalDate today = LocalDate.now();
-        LocalDate weekStart = today.with(DayOfWeek.MONDAY);
+        LocalDate weekStart = today.with(DayOfWeek.SATURDAY);
         LocalDate weekEnd = weekStart.plusDays(6);
         LocalDate monthStart = today.withDayOfMonth(1);
 

+ 66 - 32
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/MaterialIoServiceImpl.java

@@ -1894,19 +1894,10 @@ public class MaterialIoServiceImpl implements MaterialIoService {
 
     @Override
     public PageResult<MaterialInventoryReportRespVO> pageInventoryReport(MaterialInventoryReportPageReqVO reqVO) {
-        // 1. 校验并解析月份
-        if (StringUtils.isBlank(reqVO.getMonth())) {
-            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份不能为空");
-        }
-
-        YearMonth currentMonth;
-        try {
-            currentMonth = YearMonth.parse(reqVO.getMonth());
-        } catch (Exception e) {
-            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份格式不正确,应为 YYYY-MM");
-        }
-        LocalDate monthStart = currentMonth.atDay(1);
-        LocalDate nextMonthStart = currentMonth.plusMonths(1).atDay(1);
+        // 1. 校验并解析月份范围
+        MonthRange monthRange = parseMonthRange(reqVO.getMonths());
+        LocalDate monthStart = monthRange.getStart();
+        LocalDate monthEnd = monthRange.getEnd();
 
         // 2. 当月入库批次分页(以入库明细批次 material_inbound_order_item 为维度)
         LambdaQueryWrapper<MaterialInboundOrderItemDO> wrapper = new LambdaQueryWrapperX<MaterialInboundOrderItemDO>()
@@ -1916,12 +1907,12 @@ public class MaterialIoServiceImpl implements MaterialIoService {
                 // 1) 入库单为当月;
                 // 2) 或者该入库批次在当月发生过出库(即使入库单不是当月)
                 .and(w -> w.inSql(MaterialInboundOrderItemDO::getInboundOrderId,
-                                "SELECT id FROM material_inbound_order WHERE order_date >= '" + monthStart + "' AND order_date < '" + nextMonthStart + "'")
+                                "SELECT id FROM material_inbound_order WHERE order_date >= '" + monthStart + "'" + buildEndDateCondition("order_date", monthEnd))
                         .or()
                         .inSql(MaterialInboundOrderItemDO::getId,
                                 "SELECT oi.ref_inbound_item_id FROM material_outbound_order_item oi " +
                                         "INNER JOIN material_outbound_order o ON oi.outbound_order_id = o.id " +
-                                        "WHERE o.order_date >= '" + monthStart + "' AND o.order_date < '" + nextMonthStart + "'"));
+                                        "WHERE o.order_date >= '" + monthStart + "'" + buildEndDateCondition("o.order_date", monthEnd)));
 
         // 关键字匹配物资编码/名称
         if (StringUtils.isNotBlank(reqVO.getKeyword())) {
@@ -1946,7 +1937,7 @@ public class MaterialIoServiceImpl implements MaterialIoService {
             return PageResult.empty(pageResult.getTotal());
         }
 
-        List<MaterialInventoryReportRespVO> list = buildInventoryReportResp(monthStart, nextMonthStart, pageResult.getRecords());
+        List<MaterialInventoryReportRespVO> list = buildInventoryReportResp(monthStart, monthEnd, pageResult.getRecords());
         return new PageResult<>(list, pageResult.getTotal());
     }
 
@@ -1958,18 +1949,9 @@ public class MaterialIoServiceImpl implements MaterialIoService {
 
     private List<MaterialInventoryReportRespVO> listInventoryReport0(MaterialInventoryReportPageReqVO reqVO) {
         // 导出/列表不走分页时,这里用同一套条件构造 wrapper,但查询用 selectList
-        if (StringUtils.isBlank(reqVO.getMonth())) {
-            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份不能为空");
-        }
-
-        YearMonth currentMonth;
-        try {
-            currentMonth = YearMonth.parse(reqVO.getMonth());
-        } catch (Exception e) {
-            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份格式不正确,应为 YYYY-MM");
-        }
-        LocalDate monthStart = currentMonth.atDay(1);
-        LocalDate nextMonthStart = currentMonth.plusMonths(1).atDay(1);
+        MonthRange monthRange = parseMonthRange(reqVO.getMonths());
+        LocalDate monthStart = monthRange.getStart();
+        LocalDate nextMonthStart = monthRange.getEnd();
 
         LambdaQueryWrapper<MaterialInboundOrderItemDO> wrapper = new LambdaQueryWrapperX<MaterialInboundOrderItemDO>()
                 .inIfPresent(MaterialInboundOrderItemDO::getTenantId, (Object[]) reqVO.getTenantIds())
@@ -1978,12 +1960,12 @@ public class MaterialIoServiceImpl implements MaterialIoService {
                 // 1) 入库单为当月;
                 // 2) 或者该入库批次在当月发生过出库(即使入库单不是当月)
                 .and(w -> w.inSql(MaterialInboundOrderItemDO::getInboundOrderId,
-                                "SELECT id FROM material_inbound_order WHERE order_date >= '" + monthStart + "' AND order_date < '" + nextMonthStart + "'")
+                                "SELECT id FROM material_inbound_order WHERE order_date >= '" + monthStart + "'" + buildEndDateCondition("order_date", nextMonthStart))
                         .or()
                         .inSql(MaterialInboundOrderItemDO::getId,
                                 "SELECT oi.ref_inbound_item_id FROM material_outbound_order_item oi " +
                                         "INNER JOIN material_outbound_order o ON oi.outbound_order_id = o.id " +
-                                        "WHERE o.order_date >= '" + monthStart + "' AND o.order_date < '" + nextMonthStart + "'"));
+                                        "WHERE o.order_date >= '" + monthStart + "'" + buildEndDateCondition("o.order_date", nextMonthStart)));
 
         if (StringUtils.isNotBlank(reqVO.getKeyword())) {
             List<Long> materialIds = materialInfoMapper.selectList(
@@ -2008,10 +1990,10 @@ public class MaterialIoServiceImpl implements MaterialIoService {
         return buildInventoryReportResp(monthStart, nextMonthStart, records);
     }
 
-    private List<MaterialInventoryReportRespVO> buildInventoryReportResp(LocalDate monthStart, LocalDate nextMonthStart,
+    private List<MaterialInventoryReportRespVO> buildInventoryReportResp(LocalDate monthStart, LocalDate monthEnd,
                                                                         List<MaterialInboundOrderItemDO> records) {
         Set<Long> inboundItemIds = records.stream().map(MaterialInboundOrderItemDO::getId).collect(Collectors.toSet());
-        Map<Long, BigDecimal> outQtyMap = getOutboundQtySumByInboundItemIds(monthStart, nextMonthStart, inboundItemIds);
+        Map<Long, BigDecimal> outQtyMap = getOutboundQtySumByInboundItemIds(monthStart, monthEnd, inboundItemIds);
 
         Set<Long> materialIds = records.stream().map(MaterialInboundOrderItemDO::getMaterialId).collect(Collectors.toSet());
         Map<Long, MaterialInfoDO> materialMap = materialIds.isEmpty() ? Collections.emptyMap()
@@ -2196,6 +2178,58 @@ public class MaterialIoServiceImpl implements MaterialIoService {
         ));
     }
 
+    private MonthRange parseMonthRange(String[] months) {
+        if (months == null || months.length == 0 || StringUtils.isBlank(months[0])) {
+            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份开始不能为空");
+        }
+        YearMonth startMonth;
+        try {
+            startMonth = YearMonth.parse(months[0]);
+        } catch (Exception e) {
+            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份开始格式不正确,应为 YYYY-MM");
+        }
+        LocalDate start = startMonth.atDay(1);
+        if (months.length < 2 || StringUtils.isBlank(months[1])) {
+            return new MonthRange(start, null);
+        }
+        YearMonth endMonth;
+        try {
+            endMonth = YearMonth.parse(months[1]);
+        } catch (Exception e) {
+            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份结束格式不正确,应为 YYYY-MM");
+        }
+        LocalDate end = endMonth.plusMonths(1).atDay(1);
+        if (!end.isAfter(start)) {
+            throw exceptionCustomMsg(COMMON_NOT_FOUND, "月份结束必须大于开始月份");
+        }
+        return new MonthRange(start, end);
+    }
+
+    private String buildEndDateCondition(String column, LocalDate end) {
+        if (end == null) {
+            return "";
+        }
+        return " AND " + column + " < '" + end + "'";
+    }
+
+    private static class MonthRange {
+        private final LocalDate start;
+        private final LocalDate end;
+
+        private MonthRange(LocalDate start, LocalDate end) {
+            this.start = start;
+            this.end = end;
+        }
+
+        private LocalDate getStart() {
+            return start;
+        }
+
+        private LocalDate getEnd() {
+            return end;
+        }
+    }
+
     /**
      * 更新物资总库存(入库)
      */

+ 26 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/elderly/ElderlyNursingLogService.java

@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.service.elderly;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogDetailRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.ElderlyNursingLogSaveReqVO;
+
+/**
+ * 长者护理记录 Service
+ */
+public interface ElderlyNursingLogService {
+
+    Long create(ElderlyNursingLogSaveReqVO createReqVO);
+
+    void update(ElderlyNursingLogSaveReqVO updateReqVO);
+
+    void delete(Long id);
+
+    ElderlyNursingLogRespVO get(Long id);
+
+    PageResult<ElderlyNursingLogRespVO> getPage(ElderlyNursingLogPageReqVO pageReqVO);
+
+    ElderlyNursingLogDetailRespVO getDetailByElderId(Long elderId);
+}
+

+ 151 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/elderly/ElderlyNursingLogServiceImpl.java

@@ -0,0 +1,151 @@
+package cn.iocoder.yudao.module.system.service.elderly;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.module.system.controller.admin.elderly.vo.*;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.elderly.ElderlyNursingLogDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyInfoMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.elderly.ElderlyNursingLogMapper;
+import cn.iocoder.yudao.module.system.service.biz.BuildService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Service
+@Validated
+public class ElderlyNursingLogServiceImpl implements ElderlyNursingLogService {
+
+    @Resource
+    private ElderlyNursingLogMapper nursingLogMapper;
+    @Resource
+    private ElderlyInfoMapper elderlyInfoMapper;
+    @Resource
+    private BuildService buildService;
+
+    @Override
+    public Long create(ElderlyNursingLogSaveReqVO createReqVO) {
+        ElderlyNursingLogDO nursingLog = BeanUtils.toBean(createReqVO, ElderlyNursingLogDO.class);
+        if (nursingLog.getTenantId() == null) {
+            nursingLog.setTenantId(TenantContextHolder.getTenantId());
+        }
+        nursingLogMapper.insert(nursingLog);
+        return nursingLog.getId();
+    }
+
+    @Override
+    public void update(ElderlyNursingLogSaveReqVO updateReqVO) {
+        ElderlyNursingLogDO nursingLog = BeanUtils.toBean(updateReqVO, ElderlyNursingLogDO.class);
+        if (nursingLog.getTenantId() == null) {
+            nursingLog.setTenantId(TenantContextHolder.getTenantId());
+        }
+        nursingLogMapper.updateById(nursingLog);
+    }
+
+    @Override
+    public void delete(Long id) {
+        nursingLogMapper.deleteById(id);
+    }
+
+    @Override
+    public ElderlyNursingLogRespVO get(Long id) {
+        ElderlyNursingLogDO nursingLog = nursingLogMapper.selectById(id);
+        if (nursingLog == null) {
+            return null;
+        }
+        ElderlyNursingLogRespVO respVO = BeanUtils.toBean(nursingLog, ElderlyNursingLogRespVO.class);
+        fillElderInfo(Collections.singletonList(respVO));
+        return respVO;
+    }
+
+    @Override
+    public PageResult<ElderlyNursingLogRespVO> getPage(ElderlyNursingLogPageReqVO pageReqVO) {
+        if (pageReqVO.getTenantIds() == null || pageReqVO.getTenantIds().length == 0) {
+            pageReqVO.setTenantIds(new Long[]{TenantContextHolder.getTenantId()});
+        }
+
+        List<Long> elderIds;
+        if (pageReqVO.getElderName() != null && !pageReqVO.getElderName().trim().isEmpty()) {
+            List<ElderlyInfoDO> elders = elderlyInfoMapper.selectList(new LambdaQueryWrapperX<ElderlyInfoDO>()
+                    .inIfPresent(ElderlyInfoDO::getTenantId, pageReqVO.getTenantIds())
+                    .like(ElderlyInfoDO::getElderName, pageReqVO.getElderName()));
+            elderIds = elders.stream().map(ElderlyInfoDO::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            if (elderIds.isEmpty()) {
+                return PageResult.empty();
+            }
+        } else {
+            elderIds = null;
+        }
+
+        PageResult<ElderlyNursingLogDO> pageResult = nursingLogMapper.selectPage(pageReqVO);
+        List<ElderlyNursingLogDO> list = pageResult.getList();
+
+        if (elderIds != null) {
+            list = list.stream().filter(r -> elderIds.contains(r.getElderId())).collect(Collectors.toList());
+            pageResult.setList(list);
+            pageResult.setTotal((long) list.size());
+        }
+
+        List<ElderlyNursingLogRespVO> voList = BeanUtils.toBean(list, ElderlyNursingLogRespVO.class);
+        fillElderInfo(voList);
+        return new PageResult<>(voList, pageResult.getTotal());
+    }
+
+    @Override
+    public ElderlyNursingLogDetailRespVO getDetailByElderId(Long elderId) {
+        if (elderId == null) {
+            return null;
+        }
+        ElderlyInfoDO elder = elderlyInfoMapper.selectById(elderId);
+        if (elder == null) {
+            return null;
+        }
+        List<ElderlyNursingLogDO> logs = nursingLogMapper.selectByElderId(elderId);
+        List<ElderlyNursingLogRespVO> records = BeanUtils.toBean(logs, ElderlyNursingLogRespVO.class);
+
+        ElderlyNursingLogDetailRespVO detailRespVO = new ElderlyNursingLogDetailRespVO();
+        ElderlyNursingLogDetailRespVO.Header header = new ElderlyNursingLogDetailRespVO.Header();
+        header.setElderName(elder.getElderName());
+        header.setBedName(buildService.getFullBedName(elderId));
+        header.setNurseLevelName(elder.getNurseLevelName());
+        detailRespVO.setHeader(header);
+
+        for (ElderlyNursingLogRespVO record : records) {
+            record.setElderName(elder.getElderName());
+            record.setBedName(header.getBedName());
+            record.setNurseLevelName(elder.getNurseLevelName());
+        }
+        detailRespVO.setRecords(records);
+        return detailRespVO;
+    }
+
+    private void fillElderInfo(List<ElderlyNursingLogRespVO> list) {
+        if (CollectionUtil.isEmpty(list)) {
+            return;
+        }
+        Set<Long> elderIds = list.stream().map(ElderlyNursingLogRespVO::getElderId)
+                .filter(Objects::nonNull).collect(Collectors.toSet());
+        if (CollectionUtil.isEmpty(elderIds)) {
+            return;
+        }
+        List<ElderlyInfoDO> elders = elderlyInfoMapper.selectBatchIds(elderIds);
+        Map<Long, ElderlyInfoDO> elderMap = elders.stream().filter(e -> e.getId() != null)
+                .collect(Collectors.toMap(ElderlyInfoDO::getId, Function.identity(), (a, b) -> a));
+
+        for (ElderlyNursingLogRespVO vo : list) {
+            ElderlyInfoDO elder = elderMap.get(vo.getElderId());
+            if (elder != null) {
+                vo.setElderName(elder.getElderName());
+                vo.setNurseLevelName(elder.getNurseLevelName());
+            }
+            vo.setBedName(buildService.getFullBedName(vo.getElderId()));
+        }
+    }
+}

+ 3 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NurseLevelServiceImpl.java

@@ -133,7 +133,9 @@ public class NurseLevelServiceImpl implements NurseLevelService {
         NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectOne(new LambdaQueryWrapperX<NursingCategoryDO>()
                 .eq(NursingCategoryDO::getCategoryName, categoryTypeName)
                 .eq(NursingCategoryDO::getParentId, 0));
-
+        if(nursingCategoryDO == null){
+            return new ArrayList<>();
+        }
         //查询所有分类ID
         List<Long> ids = nursingCategoryService.getIdListByParent(nursingCategoryDO.getId());
         List<NurseItemDO> nurseItems = nurseItemMapper.selectList(new LambdaQueryWrapperX<NurseItemDO>()

+ 0 - 50
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NursingLogService.java

@@ -1,50 +0,0 @@
-package cn.iocoder.yudao.module.system.service.nursing;
-
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
-import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.*;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRecordDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingLogRemarksDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingPlanDO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 护理日志 Service 接口
- *
- * @author 系统管理员
- */
-public interface NursingLogService {
-
-
-    void createNursingLog(NursingPlanDO nursingPlanDO);
-
-    void supplementNursingLog(NursingLogSaveReqVO createReqVO);
-
-    Map<String, List<NursingLogRecordRespVO>> getNursingLogByTime(Long id, Integer type);
-
-    List<NursingPlanItemRespVO> getDetails(Long elderId, Integer type, Long nursingLogId);
-
-    List<Map<String, Object>> getNursingLogByItem(Long id, Integer type, String caregiverName, String nurseItemName);
-
-    void addNursingRemarks(NursingLogRemarksDO logRemarksDO);
-
-    List<NursingLogRemarksDO> getNursingRemarks(Long id);
-
-    List<NursingLogDO> getMobileNursingLog(String elderName, Long bedId);
-
-    void addNurseLogDetail(NursingLogRecordDO nursingLogRecordDO);
-
-    List<NursingLogRecordDO> getNursingRecordList(Long nursingLogId);
-
-    Map<String, List<NursingPlanItemRespVO>> getNursingItemPlanList(Long nursingLogId);
-
-    PageResult<NursingLogDO> getNursingLogPage(NursingLogPageReqVO pageReqVO);
-
-    List<NursingLogRespVO> getInspectionRecords(NursingInspectionQueryVO queryVO);
-
-    List<ElderlyInspectionRespVO> getInspectionDetails(Long nursingLogId);
-}

+ 0 - 602
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NursingLogServiceImpl.java

@@ -1,602 +0,0 @@
-package cn.iocoder.yudao.module.system.service.nursing;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
-import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.*;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.*;
-import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
-import cn.iocoder.yudao.module.system.dal.mysql.biz.*;
-import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
-import cn.iocoder.yudao.module.system.service.biz.BuildService;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-import org.springframework.validation.annotation.Validated;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.util.*;
-import java.util.stream.Collectors;
-
-
-/**
- * 护理日志 Service 实现类
- *
- * @author 系统管理员
- */
-@Service
-@Validated
-public class NursingLogServiceImpl implements NursingLogService {
-
-    @Resource
-    private NursingLogMapper nursingLogMapper;
-    @Resource
-    private ElderlyInfoMapper elderlyInfoMapper;
-    @Resource
-    private BuildService buildService;
-    @Resource
-    private NurseItemMapper nurseItemMapper;
-    @Resource
-    private NursingPlanItemMapper nursingPlanItemMapper;
-    @Resource
-    private NursingCategoryMapper nursingCategoryMapper;
-    @Resource
-    private NursingLogRecordMapper nursingLogRecordMapper;
-    @Resource
-    private NursingPlanMapper nursingPlanMapper;
-    @Resource
-    private NurseGroupDetailsMapper nurseGroupDetailsMapper;
-    @Resource
-    private NursingShiftMapper nursingShiftMapper;
-    @Resource
-    private ScheduleShiftMapper scheduleShiftMapper;
-    @Resource
-    private NursingLogRemarksMapper nursingLogRemarksMapper;
-    @Resource
-    private AdminUserMapper adminUserMapper;
-    @Resource
-    private NursingInspectionMapper nursingInspectionMapper;
-
-
-    @Override
-    public void createNursingLog(NursingPlanDO nursingPlanDO) {
-        ElderlyInfoDO elderlyInfoDO = elderlyInfoMapper.selectById(nursingPlanDO.getElderId());
-
-        NursingLogDO dbNursingLog = nursingLogMapper.selectOne(new LambdaQueryWrapperX<NursingLogDO>()
-                .eq(NursingLogDO::getNursingDate, LocalDate.now())
-                .eq(NursingLogDO::getElderId, elderlyInfoDO.getId()));
-
-        if (dbNursingLog == null) {
-            NursingLogDO nursingLogDO = new NursingLogDO();
-            nursingLogDO.setElderId(nursingPlanDO.getElderId());
-            nursingLogDO.setElderName(elderlyInfoDO.getElderName());
-            nursingLogDO.setNursingGrade(elderlyInfoDO.getNurseLevelName());
-            nursingLogDO.setCount(0);
-            nursingLogDO.setBedId(elderlyInfoDO.getBedId());
-            nursingLogDO.setBedName(buildService.getFullBedName(elderlyInfoDO.getId()));
-            nursingLogDO.setNursingDate(LocalDate.now());
-            nursingLogDO.setOrgType(elderlyInfoDO.getOrgType());
-            nursingLogDO.setTenantId(elderlyInfoDO.getTenantId());
-            nursingLogDO.setCreator("系统生成");
-            nursingLogMapper.insert(nursingLogDO);
-        }
-    }
-
-    @Override
-    public void supplementNursingLog(NursingLogSaveReqVO createReqVO) {
-        Long id = createReqVO.getId();
-        NursingLogDO dbNursingLogDO = nursingLogMapper.selectById(id);
-        if (dbNursingLogDO != null) {
-            //先删除在新增
-            nursingLogRecordMapper.delete(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                    .eq(NursingLogRecordDO::getNursingLogId, dbNursingLogDO.getId()));
-
-            List<NursingLogRecordDO> nursingLogRecordList = createReqVO.getNursingLogRecords();
-            for (NursingLogRecordDO nursingLogRecord : nursingLogRecordList) {
-                NursingPlanItemDO nursingPlanItem = nursingPlanItemMapper.selectById(nursingLogRecord.getNursingPlanItemId());
-                NurseItemDO nurseItemDO = nurseItemMapper.selectById(nursingPlanItem.getNurseItemId());
-                NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectById(nurseItemDO.getCategoryId());
-                NursingPlanDO nursingPlanDO = nursingPlanMapper.selectById(nursingPlanItem.getNursingPlanId());
-
-                nursingLogRecord.setNursingLogId(dbNursingLogDO.getId());
-                nursingLogRecord.setCategoryId(nursingCategoryDO.getId());
-                nursingLogRecord.setCategoryName(nursingCategoryDO.getCategoryName());
-                nursingLogRecord.setNurseItemImage(nurseItemDO.getImage());
-                nursingLogRecord.setType(nursingPlanDO.getType());
-                nursingLogRecord.setFrequency(nursingPlanItem.getFrequency());
-                nursingLogRecord.setFrequencyUnit(nursingPlanItem.getFrequencyUnit());
-                nursingLogRecord.setOperatingMode(nursingPlanItem.getOperatingMode());
-                nursingLogRecordMapper.insert(nursingLogRecord);
-            }
-            //统计次数
-            dbNursingLogDO.setCount(nursingLogRecordList.size());
-            nursingLogMapper.updateById(dbNursingLogDO);
-        }
-    }
-
-    @Override
-    public Map<String, List<NursingLogRecordRespVO>> getNursingLogByTime(Long id, Integer type) {
-        Map<String, List<NursingLogRecordRespVO>> dataMap = new HashMap<>();
-        NursingLogDO nursingLogDO = nursingLogMapper.selectById(id);
-        List<NursingLogRecordDO> nursingLogRecordList = nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                .eq(NursingLogRecordDO::getNursingLogId, nursingLogDO.getId())
-                .eqIfPresent(NursingLogRecordDO::getType, type));
-
-        //按照时间分组
-        int morningStartHour = 6;
-        int morningEndHour = 12;
-        int afternoonEndHour = 18;
-        int nightEnd = 24;
-
-        List<NursingLogRecordRespVO> morningEvents = nursingLogRecordList.stream()
-                .filter(e -> e.getNursingTime().getHour() >= morningStartHour && e.getNursingTime().getHour() < morningEndHour)
-                .map(e -> {
-                    NursingLogRecordRespVO respVO = new NursingLogRecordRespVO();
-                    BeanUtils.copyProperties(e, respVO);
-                    return respVO;
-                })
-                .sorted(Comparator.comparing(e -> e.getNursingTime().toLocalTime()))
-                .collect(Collectors.toList());
-
-        List<NursingLogRecordRespVO> afternoonEvents = nursingLogRecordList.stream().
-                filter(e -> e.getNursingTime().getHour() >= morningEndHour && e.getNursingTime().getHour() < afternoonEndHour)
-                .map(e -> {
-                    NursingLogRecordRespVO respVO = new NursingLogRecordRespVO();
-                    BeanUtils.copyProperties(e, respVO);
-                    return respVO;
-                }).sorted(Comparator.comparing(e -> e.getNursingTime().toLocalTime()))
-                .collect(Collectors.toList());
-
-        List<NursingLogRecordRespVO> nightEvents = nursingLogRecordList.stream().
-                filter(e -> e.getNursingTime().getHour() >= afternoonEndHour && e.getNursingTime().getHour() < nightEnd)
-                .map(e -> {
-                    NursingLogRecordRespVO respVO = new NursingLogRecordRespVO();
-                    BeanUtils.copyProperties(e, respVO);
-                    return respVO;
-                }).sorted(Comparator.comparing(e -> e.getNursingTime().toLocalTime()))
-                .collect(Collectors.toList());
-
-
-        List<NursingLogRecordRespVO> beforeDawnEvents = nursingLogRecordList.stream().
-                filter(e -> e.getNursingTime().getHour() >= nightEnd && e.getNursingTime().getHour() < morningStartHour)
-                .map(e -> {
-                    NursingLogRecordRespVO respVO = new NursingLogRecordRespVO();
-                    BeanUtils.copyProperties(e, respVO);
-                    return respVO;
-                }).sorted(Comparator.comparing(e -> e.getNursingTime().toLocalTime()))
-                .collect(Collectors.toList());
-
-        dataMap.put("morningEvents", morningEvents);   //6-12
-        dataMap.put("afternoonEvents", afternoonEvents); //12-18
-        dataMap.put("nightEvents", nightEvents);   //18-24
-        dataMap.put("beforeDawnEvents", beforeDawnEvents); //24-6
-        return dataMap;
-    }
-
-    @Override
-    public List<NursingPlanItemRespVO> getDetails(Long elderId, Integer type, Long nursingLogId) {
-        List<NursingPlanItemRespVO> dataList = new ArrayList<>();
-        List<NursingPlanDO> nursingPlanList = nursingPlanMapper.selectList(new LambdaQueryWrapperX<NursingPlanDO>()
-                .eq(NursingPlanDO::getElderId, elderId)
-                .eqIfPresent(NursingPlanDO::getType, type));
-
-        for (NursingPlanDO nursingPlan : nursingPlanList) {
-            List<NursingPlanItemDO> nursingPlanItems = nursingPlanItemMapper.selectList(new LambdaQueryWrapperX<NursingPlanItemDO>()
-                    .eq(NursingPlanItemDO::getNursingPlanId, nursingPlan.getId())
-                    .eq(NursingPlanItemDO::getIsDelete, 0));
-
-            List<NursingPlanItemRespVO> collect = nursingPlanItems.stream().map(e -> {
-                NursingPlanItemRespVO respVO = new NursingPlanItemRespVO();
-                BeanUtils.copyProperties(e, respVO);
-
-                NurseItemDO nurseItemDO = nurseItemMapper.selectById(e.getNurseItemId());
-                NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectById(nurseItemDO.getCategoryId());
-
-                respVO.setCategoryId(nursingCategoryDO.getId());
-                respVO.setCategoryName(nursingCategoryDO.getCategoryName());
-                respVO.setNurseItemImage(nurseItemDO.getImage());
-
-                //查询护理日志详情
-                List<NursingLogRecordDO> nursingLogRecords = nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                        .eq(NursingLogRecordDO::getNursingPlanItemId, e.getId())
-                        .eqIfPresent(NursingLogRecordDO::getNursingLogId, nursingLogId)
-                        .orderByAsc(NursingLogRecordDO::getNursingTime));
-                respVO.setActualFrequency(nursingLogRecords.size()); //实际次数
-                respVO.setRecords(nursingLogRecords);
-                return respVO;
-            }).collect(Collectors.toList());
-            dataList.addAll(collect);
-        }
-        return dataList;
-    }
-
-    @Override
-    public List<Map<String, Object>> getNursingLogByItem(Long id, Integer type, String caregiverName, String nurseItemName) {
-        List<Map<String, Object>> resultList = new ArrayList<>();
-        NursingLogDO nursingLog = nursingLogMapper.selectById(id);
-        if (StringUtils.isBlank(caregiverName) && StringUtils.isBlank(nurseItemName)) {
-            //查询护理分组
-            List<NurseGroupDetailsDO> nurseGroupDetails = nurseGroupDetailsMapper.selectList(new LambdaQueryWrapperX<NurseGroupDetailsDO>()
-                    .eq(NurseGroupDetailsDO::getElderId, nursingLog.getElderId()));
-            //根据护理分组查询班次信息,护理信息
-            for (NurseGroupDetailsDO nurseGroupDetail : nurseGroupDetails) {
-                Map<String, Object> dataMap = new HashMap<>();
-                String[] splitIds = nurseGroupDetail.getNursingPersonnelIds().split(",");
-                for (String nurseId : splitIds) {
-                    //查询当天班次信息
-                    ScheduleShiftDO scheduleShiftDO = scheduleShiftMapper.selectOne(new LambdaQueryWrapperX<ScheduleShiftDO>()
-                            .eq(ScheduleShiftDO::getNurseId, nurseId)
-                            .eq(ScheduleShiftDO::getWorkDate, nursingLog.getNursingDate())
-                            .eq(ScheduleShiftDO::getDeleted,0)
-                            .notLike(ScheduleShiftDO::getShiftName, "休"));
-
-
-                    //判断当天有没有班次
-                    if (scheduleShiftDO != null) {
-                        //排班信息
-                        ScheduleShiftDetailVO detailVO = new ScheduleShiftDetailVO();
-                        BeanUtils.copyProperties(scheduleShiftDO, detailVO);
-                        AdminUserDO adminUserDO = adminUserMapper.selectById(scheduleShiftDO.getNurseId());
-                        detailVO.setNurseName(adminUserDO.getNickname());
-
-                        int count;
-                        List<NursingPlanItemRespVO> dataList = new ArrayList<>();
-                        //查询长者护理项目
-                        List<NursingPlanDO> nursingPlanList = nursingPlanMapper.selectList(new LambdaQueryWrapperX<NursingPlanDO>()
-                                .eq(NursingPlanDO::getElderId, nursingLog.getElderId())
-                                .eqIfPresent(NursingPlanDO::getType, type));
-
-                        for (NursingPlanDO nursingPlanDO : nursingPlanList) {
-                            List<NursingPlanItemDO> nursingPlanItems = nursingPlanItemMapper.selectList(new LambdaQueryWrapperX<NursingPlanItemDO>()
-                                    .eq(NursingPlanItemDO::getNursingPlanId, nursingPlanDO.getId())
-                                    .eq(NursingPlanItemDO::getIsDelete, 0));
-
-                            List<NursingPlanItemRespVO> collect = nursingPlanItems.stream().map(e -> {
-                                NursingPlanItemRespVO respVO = new NursingPlanItemRespVO();
-                                BeanUtils.copyProperties(e, respVO);
-
-                                NurseItemDO nurseItemDO = nurseItemMapper.selectById(e.getNurseItemId());
-                                NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectById(nurseItemDO.getCategoryId());
-
-                                respVO.setCategoryId(nursingCategoryDO.getId());
-                                respVO.setCategoryName(nursingCategoryDO.getCategoryName());
-                                respVO.setNurseItemImage(nurseItemDO.getImage());
-
-                                //查询护理日志详情
-                                List<NursingLogRecordDO> nursingLogRecords = nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                                        .eq(NursingLogRecordDO::getNursingPlanItemId, e.getId())
-                                        .eqIfPresent(NursingLogRecordDO::getNursingLogId, id)
-                                        .orderByAsc(NursingLogRecordDO::getNursingTime));
-                                respVO.setActualFrequency(nursingLogRecords.size()); //实际次数
-                                respVO.setRecords(nursingLogRecords);
-                                return respVO;
-                            }).sorted(Comparator.comparing(NursingPlanItemRespVO::getActualFrequency).reversed()).collect(Collectors.toList());
-                            dataList.addAll(collect);
-                        }
-                        if (CollectionUtil.isNotEmpty(dataList)) {
-                            count = dataList.stream().mapToInt(NursingPlanItemRespVO::getActualFrequency).sum();
-                            detailVO.setCount(count);
-                            dataMap.put("scheduleShift", detailVO); //班次信息
-                            dataMap.put("nurseItems", dataList);           //护理项目信息
-                            resultList.add(dataMap);
-                        }
-                    }
-                }
-            }
-        } else {
-            List<NurseGroupDetailsDO> nurseGroupDetails = nurseGroupDetailsMapper.selectList(new LambdaQueryWrapperX<NurseGroupDetailsDO>()
-                    .eq(NurseGroupDetailsDO::getElderId, nursingLog.getElderId())
-                    .likeIfPresent(NurseGroupDetailsDO::getNursingPersonnel, caregiverName));
-
-            for (NurseGroupDetailsDO nurseGroupDetail : nurseGroupDetails) {
-                Map<String, Object> dataMap = new HashMap<>();
-                String[] splitIds = nurseGroupDetail.getNursingPersonnelIds().split(",");
-                for (String nurseId : splitIds) {
-                    //查询当天班次信息
-                    ScheduleShiftDO scheduleShiftDO = scheduleShiftMapper.selectOne(new LambdaQueryWrapperX<ScheduleShiftDO>()
-                            .eq(ScheduleShiftDO::getNurseId, nurseId)
-                            .eq(ScheduleShiftDO::getWorkDate, nursingLog.getNursingDate())
-                            .notLike(ScheduleShiftDO::getShiftName, "休"));
-
-                    //判断当天有没有班次
-                    if (scheduleShiftDO != null) {
-                        //排班信息
-                        ScheduleShiftDetailVO detailVO = new ScheduleShiftDetailVO();
-                        BeanUtils.copyProperties(scheduleShiftDO, detailVO);
-                        AdminUserDO adminUserDO = adminUserMapper.selectById(scheduleShiftDO.getNurseId());
-                        detailVO.setNurseName(adminUserDO.getNickname());
-
-                        int count;
-                        List<NursingPlanItemRespVO> dataList = new ArrayList<>();
-                        //查询长者护理项目
-                        List<NursingPlanDO> nursingPlanList = nursingPlanMapper.selectList(new LambdaQueryWrapperX<NursingPlanDO>()
-                                .eq(NursingPlanDO::getElderId, nursingLog.getElderId())
-                                .eqIfPresent(NursingPlanDO::getType, type));  //根据护理类型分裂
-
-                        for (NursingPlanDO nursingPlanDO : nursingPlanList) {
-                            List<NursingPlanItemDO> nursingPlanItems = nursingPlanItemMapper.selectList(new LambdaQueryWrapperX<NursingPlanItemDO>()
-                                    .eq(NursingPlanItemDO::getNursingPlanId, nursingPlanDO.getId())
-                                    .eqIfPresent(NursingPlanItemDO::getNurseItemName, nurseItemName)  //按照护理名称查询
-                                    .eq(NursingPlanItemDO::getIsDelete, 0));
-
-                            if (CollectionUtil.isNotEmpty(nursingPlanItems)) {
-                                List<NursingPlanItemRespVO> collect = nursingPlanItems.stream().map(e -> {
-                                    NursingPlanItemRespVO respVO = new NursingPlanItemRespVO();
-                                    BeanUtils.copyProperties(e, respVO);
-
-                                    NurseItemDO nurseItemDO = nurseItemMapper.selectById(e.getNurseItemId());
-                                    NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectById(nurseItemDO.getCategoryId());
-
-                                    respVO.setCategoryId(nursingCategoryDO.getId());
-                                    respVO.setCategoryName(nursingCategoryDO.getCategoryName());
-                                    respVO.setNurseItemImage(nurseItemDO.getImage());
-
-                                    //查询护理日志详情
-                                    List<NursingLogRecordDO> nursingLogRecords = nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                                            .eq(NursingLogRecordDO::getNursingPlanItemId, e.getId())
-                                            .eqIfPresent(NursingLogRecordDO::getNursingLogId, id)
-                                            .orderByAsc(NursingLogRecordDO::getNursingTime));
-                                    respVO.setActualFrequency(nursingLogRecords.size()); //实际次数
-                                    respVO.setRecords(nursingLogRecords);
-                                    return respVO;
-                                }).sorted(Comparator.comparing(NursingPlanItemRespVO::getActualFrequency).reversed()).collect(Collectors.toList());
-                                dataList.addAll(collect);
-                            }
-
-                        }
-                        if (CollectionUtil.isNotEmpty(dataList)) {
-                            count = dataList.stream().mapToInt(NursingPlanItemRespVO::getActualFrequency).sum();
-                            detailVO.setCount(count);
-                            dataMap.put("scheduleShift", scheduleShiftDO); //班次信息
-                            dataMap.put("nurseItems", dataList);           //护理项目信息
-                            resultList.add(dataMap);
-                        }
-                    }
-                }
-            }
-        }
-        return resultList;
-    }
-
-    @Override
-    public void addNursingRemarks(NursingLogRemarksDO logRemarksDO) {
-        logRemarksDO.setCreatedTime(new Date());
-        logRemarksDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
-        nursingLogRemarksMapper.insert(logRemarksDO);
-    }
-
-    @Override
-    public List<NursingLogRemarksDO> getNursingRemarks(Long id) {
-        return nursingLogRemarksMapper.selectList(new LambdaQueryWrapperX<NursingLogRemarksDO>()
-                .eq(NursingLogRemarksDO::getNursingLogId, id)
-                .orderByDesc(NursingLogRemarksDO::getCreatedTime));
-    }
-
-    @Override
-    public List<NursingLogDO> getMobileNursingLog(String elderName, Long bedId) {
-        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        //根据当前登录的护理人员ID
-        //查询当前是否有班次
-        List<ScheduleShiftDO> scheduleShift = scheduleShiftMapper.selectList(new LambdaQueryWrapperX<ScheduleShiftDO>()
-                .eq(ScheduleShiftDO::getNurseId, loginUserId)
-                .eq(ScheduleShiftDO::getWorkDate, LocalDate.now())
-                .notLike(ScheduleShiftDO::getShiftName, "休"));
-
-        boolean flag = false;
-        //查询班次时间
-        for (ScheduleShiftDO scheduleShiftDO : scheduleShift) {
-            String shiftName = scheduleShiftDO.getShiftName();
-            NursingShiftDO shiftDO = nursingShiftMapper.selectOne(new LambdaQueryWrapperX<NursingShiftDO>()
-                    .eq(NursingShiftDO::getAbbreviation, shiftName));
-            if (shiftDO != null && !shiftDO.getConfigs().equals("[]")) {
-                String configs = shiftDO.getConfigs();
-                JSONArray jsonArray = JSONArray.parseArray(configs);
-                for (Object object : jsonArray) {
-                    JSONObject jsonObject = JSONObject.parseObject(object.toString());
-                    LocalTime startTime = LocalTime.parse((String) jsonObject.get("startTime"));
-                    LocalTime endTime = LocalTime.parse((String) jsonObject.get("endTime"));
-                    LocalTime timeToCheck = LocalDateTime.now().toLocalTime();
-                    flag = timeToCheck.compareTo(startTime) >= 0 && timeToCheck.compareTo(endTime) <= 0;
-                }
-            }
-        }
-        List<NursingLogDO> nursingLogList = new ArrayList<>();
-        if (flag) {
-            //在班次时间范围里面查询当天关联的护理日志
-            List<Long> elderIds = nurseGroupDetailsMapper.selectList(new LambdaQueryWrapperX<NurseGroupDetailsDO>()
-                            .likeIfPresent(NurseGroupDetailsDO::getNursingPersonnelIds, loginUserId.toString())
-                            .likeIfPresent(NurseGroupDetailsDO::getElderName, elderName)).stream()
-                    .map(NurseGroupDetailsDO::getElderId).collect(Collectors.toList());
-
-            nursingLogList = nursingLogMapper.selectList(new LambdaQueryWrapperX<NursingLogDO>()
-                    .in(NursingLogDO::getElderId, elderIds));
-
-            for (NursingLogDO nursingLogDO : nursingLogList) {
-                ElderlyInfoDO elderlyInfo = elderlyInfoMapper.selectById(nursingLogDO.getElderId());
-                nursingLogDO.setElderImage(elderlyInfo == null ? null : elderlyInfo.getElderImage());
-            }
-
-        }
-        return nursingLogList;
-    }
-
-    @Override
-    public void addNurseLogDetail(NursingLogRecordDO nursingLogRecordDO) {
-        NursingLogDO dbNursingLogDO = nursingLogMapper.selectById(nursingLogRecordDO.getNursingLogId());
-
-        NursingPlanItemDO nursingPlanItem = nursingPlanItemMapper.selectById(nursingLogRecordDO.getNursingPlanItemId());
-        NurseItemDO nurseItemDO = nurseItemMapper.selectById(nursingPlanItem.getNurseItemId());
-        NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectById(nurseItemDO.getCategoryId());
-        NursingPlanDO nursingPlanDO = nursingPlanMapper.selectById(nursingPlanItem.getNursingPlanId());
-
-        nursingLogRecordDO.setNursingLogId(dbNursingLogDO.getId());
-        nursingLogRecordDO.setCategoryId(nursingCategoryDO.getId());
-        nursingLogRecordDO.setCategoryName(nursingCategoryDO.getCategoryName());
-        nursingLogRecordDO.setNurseItemImage(nurseItemDO.getImage());
-        nursingLogRecordDO.setType(nursingPlanDO.getType());
-        nursingLogRecordDO.setDataSource(2); //数据来源,1.PC 2.移动端
-        nursingLogRecordMapper.insert(nursingLogRecordDO);
-
-        //修改次数
-        dbNursingLogDO.setCount(dbNursingLogDO.getCount() + 1);
-        nursingLogMapper.updateById(dbNursingLogDO);
-    }
-
-    @Override
-    public List<NursingLogRecordDO> getNursingRecordList(Long nursingLogId) {
-        return nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                .eq(NursingLogRecordDO::getNursingLogId, nursingLogId));
-    }
-
-    @Override
-    public Map<String, List<NursingPlanItemRespVO>> getNursingItemPlanList(Long nursingLogId) {
-        NursingLogDO nursingLogDO = nursingLogMapper.selectById(nursingLogId);
-        Long elderId = nursingLogDO.getElderId();
-
-        List<NursingPlanDO> nursingPlanList = nursingPlanMapper.selectList(new LambdaQueryWrapperX<NursingPlanDO>()
-                .eq(NursingPlanDO::getElderId, elderId));
-
-//        List<NursingPlanItemDO> collect = nursingPlanList.stream().map(e -> nursingPlanItemMapper.
-//                selectList(new LambdaQueryWrapperX<NursingPlanItemDO>()
-//                        .eq(NursingPlanItemDO::getNursingPlanId, e.getId()))).flatMap(List::stream).collect(Collectors.toList());
-
-
-        List<NursingPlanItemRespVO> collect = nursingPlanList.stream().map(e -> {
-            List<NursingPlanItemDO> nursingPlanItems = nursingPlanItemMapper.
-                    selectList(new LambdaQueryWrapperX<NursingPlanItemDO>().eq(NursingPlanItemDO::getNursingPlanId, e.getId()));
-
-            List<NursingPlanItemRespVO> list = new ArrayList<>();
-            for (NursingPlanItemDO nursingPlanItem : nursingPlanItems) {
-                NursingPlanItemRespVO respVO = new NursingPlanItemRespVO();
-                BeanUtils.copyProperties(nursingPlanItem, respVO);
-                //查询护理日志详情
-                List<NursingLogRecordDO> nursingLogRecords = nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                        .eq(NursingLogRecordDO::getNursingPlanItemId, nursingPlanItem.getId())
-                        .orderByAsc(NursingLogRecordDO::getNursingTime));
-                respVO.setActualFrequency(nursingLogRecords.size()); //实际次数
-                respVO.setRecords(nursingLogRecords);
-                list.add(respVO);
-            }
-            return list;
-        }).flatMap(List::stream).collect(Collectors.toList());
-
-        //根据年,月,周,日进行排序
-        List<NursingPlanItemRespVO> yearList = collect.stream()
-                .filter(e -> e.getFrequencyUnit().equals("4")).sorted(Comparator.comparing(NursingPlanItemRespVO::getActualFrequency).reversed())
-                .collect(Collectors.toList());
-
-        List<NursingPlanItemRespVO> monthList = collect.stream()
-                .filter(e -> e.getFrequencyUnit().equals("3")).sorted(Comparator.comparing(NursingPlanItemRespVO::getActualFrequency).reversed())
-                .collect(Collectors.toList());
-
-        List<NursingPlanItemRespVO> weekList = collect.stream()
-                .filter(e -> e.getFrequencyUnit().equals("2")).sorted(Comparator.comparing(NursingPlanItemRespVO::getActualFrequency).reversed())
-                .collect(Collectors.toList());
-
-        List<NursingPlanItemRespVO> dayList = collect.stream()
-                .filter(e -> e.getFrequencyUnit().equals("1")).sorted(Comparator.comparing(NursingPlanItemRespVO::getActualFrequency).reversed())
-                .collect(Collectors.toList());
-
-        Map<String, List<NursingPlanItemRespVO>> dataMap = new HashMap<>();
-        dataMap.put("yearList", yearList);
-        dataMap.put("monthList", monthList);
-        dataMap.put("weekList", weekList);
-        dataMap.put("dayList", dayList);
-        return dataMap;
-    }
-
-    @Override
-    public PageResult<NursingLogDO> getNursingLogPage(NursingLogPageReqVO pageReqVO) {
-        return nursingLogMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<NursingLogRespVO> getInspectionRecords(NursingInspectionQueryVO queryVO) {
-        List<NurseGroupDetailsDO> nurseGroupDetails = nurseGroupDetailsMapper.selectList(new LambdaQueryWrapperX<NurseGroupDetailsDO>()
-                .likeIfPresent(NurseGroupDetailsDO::getNursingPersonnelIds, SecurityFrameworkUtils.getLoginUserId().toString()));
-
-        if (StringUtils.isNotBlank(queryVO.getCaregiver())) {
-            nurseGroupDetails = nurseGroupDetails.stream()
-                    .filter(e -> e.getNursingPersonnel().contains(queryVO.getCaregiver()))
-                    .collect(Collectors.toList());
-        }
-        List<Long> elderIds = nurseGroupDetails.stream().map(NurseGroupDetailsDO::getElderId).collect(Collectors.toList());
-        List<NursingLogDO> nursingLogList = nursingLogMapper.selectList(new LambdaQueryWrapperX<NursingLogDO>()
-                .eqIfPresent(NursingLogDO::getNursingDate, queryVO.getQueryDate())
-                .likeIfPresent(NursingLogDO::getElderName, queryVO.getElderName())
-                .eqIfPresent(NursingLogDO::getBedId, queryVO.getBedId())
-                .inIfPresent(NursingLogDO::getElderId, elderIds)
-                .eqIfPresent(NursingLogDO::getNursingStatus, queryVO.getNursingStatus()));
-
-        List<NursingLogRespVO> dataList = cn.iocoder.yudao.framework.common.util.object.BeanUtils.toBean(nursingLogList, NursingLogRespVO.class);
-        for (NursingLogRespVO nursingLogRespVO : dataList) {
-            NurseGroupDetailsDO nurseGroupDetailsDO = nurseGroupDetailsMapper.selectOne(new LambdaQueryWrapperX<NurseGroupDetailsDO>()
-                    .eq(NurseGroupDetailsDO::getElderId, nursingLogRespVO.getElderId()));
-            nursingLogRespVO.setNurseName(nurseGroupDetailsDO == null ? null : nurseGroupDetailsDO.getNursingPersonnel());
-        }
-        return dataList;
-    }
-
-    @Override
-    public List<ElderlyInspectionRespVO> getInspectionDetails(Long nursingLogId) {
-        NursingLogDO nursingLogDO = nursingLogMapper.selectById(nursingLogId);
-
-        List<NursingPlanDO> nursingPlanList = nursingPlanMapper.selectList(new LambdaQueryWrapperX<NursingPlanDO>()
-                .eq(NursingPlanDO::getElderId, nursingLogDO.getElderId()));
-
-        List<NursingPlanItemDO> nursingPlanItems = nursingPlanList.stream().map(e -> nursingPlanItemMapper.selectList(new LambdaQueryWrapperX<NursingPlanItemDO>()
-                .eq(NursingPlanItemDO::getNursingPlanId, e.getId()))).flatMap(List::stream).collect(Collectors.toList());
-
-        for (NursingPlanItemDO nursingPlanItem : nursingPlanItems) {
-            NurseItemDO itemDO = nurseItemMapper.selectById(nursingPlanItem.getNurseItemId());
-            NursingCategoryDO nursingCategoryDO = nursingCategoryMapper.selectById(itemDO.getCategoryId());
-            nursingPlanItem.setCategoryName(nursingCategoryDO.getCategoryName());
-        }
-        Map<String, List<NursingPlanItemDO>> groupedByCategory = nursingPlanItems.stream()
-                .collect(Collectors.groupingBy(NursingPlanItemDO::getCategoryName));
-
-        List<ElderlyInspectionRespVO> dataList = new ArrayList<>();
-        groupedByCategory.forEach((categoryName, items) -> {
-
-
-            ElderlyInspectionRespVO respVO = new ElderlyInspectionRespVO();
-            respVO.setNurseItemCategoryName(categoryName);
-
-            List<NursingPlanItemRespVO> collect = items.stream().map(e -> {
-                NursingPlanItemRespVO nursingPlanItemRespVO = new NursingPlanItemRespVO();
-                BeanUtils.copyProperties(e, nursingPlanItemRespVO);
-
-                NurseItemDO nurseItemDO = nurseItemMapper.selectById(e.getNurseItemId());
-
-                nursingPlanItemRespVO.setNurseItemImage(nurseItemDO.getImage());
-
-                //查询护理日志详情
-                List<NursingLogRecordDO> nursingLogRecords = nursingLogRecordMapper.selectList(new LambdaQueryWrapperX<NursingLogRecordDO>()
-                        .eq(NursingLogRecordDO::getNursingPlanItemId, e.getId())
-                        .eqIfPresent(NursingLogRecordDO::getNursingLogId, nursingLogDO.getId())
-                        .orderByAsc(NursingLogRecordDO::getNursingTime));
-                nursingPlanItemRespVO.setActualFrequency(nursingLogRecords.size()); //实际次数
-
-                //todo 计算巡检次数
-                Long count = nursingInspectionMapper.selectCount(new LambdaQueryWrapperX<NursingInspectionDO>()
-                        .eq(NursingInspectionDO::getNursingPlanItemId, e.getId())
-                        .eq(NursingInspectionDO::getNursingLogId,nursingLogDO.getId()));
-                nursingPlanItemRespVO.setInspectionCount(count.intValue());
-                return nursingPlanItemRespVO;
-
-            }).collect (Collectors.toList());
-            respVO.setRecords(collect);
-            dataList.add(respVO);
-        });
-        return dataList;
-    }
-}

+ 16 - 18
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/nursing/NursingPlanServiceImpl.java

@@ -7,8 +7,20 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanPageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.nursing.vo.NursingPlanSaveReqVO;
-import cn.iocoder.yudao.module.system.dal.dataobject.biz.*;
-import cn.iocoder.yudao.module.system.dal.mysql.biz.*;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.DailyExpensesDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.NurseItemDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingCategoryDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingPlanDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.NursingPlanItemDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.DailyExpensesMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyContractMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyInfoMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.NurseItemMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingCategoryMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingPlanItemMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.NursingPlanMapper;
 import cn.iocoder.yudao.module.system.enums.common.BooleanEnum;
 import cn.iocoder.yudao.module.system.service.biz.BuildService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -57,8 +69,6 @@ public class NursingPlanServiceImpl implements NursingPlanService {
     private NursingCategoryMapper nursingCategoryMapper;
     @Resource
     private DailyExpensesMapper dailyExpensesMapper;
-    @Resource
-    private NursingLogMapper nursingLogMapper;
 
     @Override
     @Transactional
@@ -87,7 +97,7 @@ public class NursingPlanServiceImpl implements NursingPlanService {
                     .atZone(ZoneId.systemDefault())
                     .toLocalDate());
         } else {
-            nursingPlan.setExpirationDate(LocalDate.MAX);
+            nursingPlan.setExpirationDate(nursingPlan.getEffectiveDate().plusYears(99));
         }
         nursingPlanMapper.insert(nursingPlan);
 
@@ -99,21 +109,9 @@ public class NursingPlanServiceImpl implements NursingPlanService {
             item.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
             nursingPlanItemMapper.insert(item);
             //创建日常费用
-            createdDailyExpense(createReqVO.getElderId(), item);
+//            createdDailyExpense(createReqVO.getElderId(), item);
         }
 
-        if (LocalDate.now().equals(nursingPlan.getEffectiveDate())){
-            ElderlyInfoDO elderlyInfoDO = elderlyInfoMapper.selectById(createReqVO.getElderId());
-            NursingLogDO nursingLogDO = new NursingLogDO();
-            nursingLogDO.setElderId(createReqVO.getElderId());
-            nursingLogDO.setElderName(createReqVO.getElderName());
-            nursingLogDO.setNursingGrade(elderlyInfoDO.getNurseLevelName());
-            nursingLogDO.setCount(0);
-            nursingLogDO.setBedName(buildService.getFullBedName(elderlyInfoDO.getId()));
-            nursingLogDO.setNursingDate(nursingPlan.getEffectiveDate());
-            nursingLogDO.setOrgType(elderlyInfoDO.getOrgType());
-            nursingLogMapper.insert(nursingLogDO);
-        }
     }
 
     private void createdDailyExpense(Long elderId, NursingPlanItemDO item) {

+ 1 - 0
yudao-server/src/main/resources/application.yaml

@@ -232,6 +232,7 @@ yudao:
       - /admin-api/elderly/order-food/get
       - /admin-api/elderly/order-food/page
       - /admin-api/relatives/getDetailsByElderId
+      - /admin-api/elderly/nursingPlan/getNursingPlanByElderId
     ignore-tables:
       - system_tenant
       - system_groups