Bladeren bron

新增
1、新增设施设备检查模块
2、新增危险物品登记模块
3、新增公告区域消毒模块
修改
1、表单创建以及查询加上机构id
2、添加固定费用接口逻辑修改
3、解决应收报表特殊场景获取退住数据不全的问题

liangwenxuan 3 maanden geleden
bovenliggende
commit
17346cf7da
34 gewijzigde bestanden met toevoegingen van 1249 en 81 verwijderingen
  1. 4 0
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmFormDO.java
  2. 1 0
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmFormMapper.java
  3. 2 0
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormServiceImpl.java
  4. 1 1
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/order/DTO/OrderItemRespDTO.java
  5. 1 1
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/order/VO/OrderItemRespVO.java
  6. 36 21
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/order/OrderApiImpl.java
  7. 77 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyDangerMaterialRegisterController.java
  8. 77 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyDisinfectRecordController.java
  9. 77 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyFacilityEquipmentCheckController.java
  10. 0 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyFixedExpenseAppendReqVO.java
  11. 33 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydangermaterialregister/ElderlyDangerMaterialRegisterPageReqVO.java
  12. 72 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydangermaterialregister/ElderlyDangerMaterialRegisterRespVO.java
  13. 50 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydangermaterialregister/ElderlyDangerMaterialRegisterSaveReqVO.java
  14. 29 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydisinfectrecord/ElderlyDisinfectRecordPageReqVO.java
  15. 52 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydisinfectrecord/ElderlyDisinfectRecordRespVO.java
  16. 40 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydisinfectrecord/ElderlyDisinfectRecordSaveReqVO.java
  17. 29 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyfacilityequipmentcheck/ElderlyFacilityEquipmentCheckPageReqVO.java
  18. 58 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyfacilityequipmentcheck/ElderlyFacilityEquipmentCheckRespVO.java
  19. 46 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyfacilityequipmentcheck/ElderlyFacilityEquipmentCheckSaveReqVO.java
  20. 62 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyDangerMaterialRegisterDO.java
  21. 55 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyDisinfectRecordDO.java
  22. 61 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyFacilityEquipmentCheckDO.java
  23. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyBuildFloorActivityImageMapper.java
  24. 22 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyDangerMaterialRegisterMapper.java
  25. 20 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyDisinfectRecordMapper.java
  26. 20 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/biz/ElderlyFacilityEquipmentCheckMapper.java
  27. 20 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDangerMaterialRegisterService.java
  28. 80 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDangerMaterialRegisterServiceImpl.java
  29. 19 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDisinfectRecordService.java
  30. 65 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDisinfectRecordServiceImpl.java
  31. 19 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyFacilityEquipmentCheckService.java
  32. 65 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyFacilityEquipmentCheckServiceImpl.java
  33. 52 47
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ExpenseServiceImpl.java
  34. 2 10
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ExpenseOrderMapper.xml

+ 4 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmFormDO.java

@@ -56,5 +56,9 @@ public class BpmFormDO extends BaseDO {
      * 备注
      */
     private String remark;
+    /**
+     * 机构id
+     */
+    private Long tenantId;
 
 }

+ 1 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmFormMapper.java

@@ -18,6 +18,7 @@ public interface BpmFormMapper extends BaseMapperX<BpmFormDO> {
 
     default PageResult<BpmFormDO> selectPage(BpmFormPageReqVO reqVO) {
         return selectPage(reqVO, new QueryWrapperX<BpmFormDO>()
+                .inIfPresent("tenant_id",reqVO.getTenantIds())
                 .likeIfPresent("name", reqVO.getName())
                 .orderByDesc("id"));
     }

+ 2 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormServiceImpl.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormSaveReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
@@ -39,6 +40,7 @@ public class BpmFormServiceImpl implements BpmFormService {
         this.validateFields(createReqVO.getFields());
         // 插入
         BpmFormDO form = BeanUtils.toBean(createReqVO, BpmFormDO.class);
+        form.setTenantId(TenantContextHolder.getTenantId());
         formMapper.insert(form);
         // 返回
         return form.getId();

+ 1 - 1
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/order/DTO/OrderItemRespDTO.java

@@ -39,7 +39,7 @@ public class OrderItemRespDTO {
     private String bedName;
 
     // 房间类型
-    private String itemName;
+    private String bedItemName;
 
     // 护理等级
     private String nurseLevelName;

+ 1 - 1
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/order/VO/OrderItemRespVO.java

@@ -38,7 +38,7 @@ public class OrderItemRespVO {
     private String bedName;
 
     // 房间类型
-    private String itemName;
+    private String bedItemName;
 
     // 护理等级
     private String nurseLevelName;

+ 36 - 21
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/order/OrderApiImpl.java

@@ -229,6 +229,7 @@ public class OrderApiImpl implements OrderApi {
         dto.setNurseActualAmount(BigDecimal.ZERO);
         dto.setServiceActualAmount(BigDecimal.ZERO);
         dto.setExtraServiceAmount(BigDecimal.ZERO);
+        dto.setOrderWaterElectricityAmount(BigDecimal.ZERO);
         dto.setTotalAmount(BigDecimal.ZERO);
         dto.setTotalActualAmount(BigDecimal.ZERO);
         dto.setAdjustAmount(BigDecimal.ZERO);
@@ -249,7 +250,7 @@ public class OrderApiImpl implements OrderApi {
                 continue;
             }
             ExpenseItemDO expenseItemDO = expenseItemMap.get(expenseOrderItemDO.getSourceExpenseItemId());
-            if (expenseItemDO == null || expenseItemDO.getType() == null) {
+            if (expenseItemDO == null) {
                 continue;
             }
 
@@ -258,17 +259,18 @@ public class OrderApiImpl implements OrderApi {
             BigDecimal actualAmount = expenseOrderItemDO.getTotalAmount() == null
                     ? BigDecimal.ZERO : expenseOrderItemDO.getTotalAmount();
 
-            int type = expenseItemDO.getType();
-            if (1 == type) {
+            Integer type = expenseItemDO.getType();
+            if ((type != null  && 1 == type) || expenseItemDO.getItemName().contains("床位费")) {
+                dto.setBedItemName(expenseItemDO.getItemName());
                 dto.setBedAmount(dto.getBedAmount().add(standardAmount));
                 dto.setBedActualAmount(dto.getBedActualAmount().add(actualAmount));
-            } else if (2 == type) {
+            } else if ((type != null  && 2 == type) || expenseItemDO.getItemName().contains("护理费")) {
                 dto.setNurseAmount(dto.getNurseAmount().add(standardAmount));
                 dto.setNurseActualAmount(dto.getNurseActualAmount().add(actualAmount));
-            } else if (3 == type) {
+            } else if ((type != null  && 3 == type) || expenseItemDO.getItemName().contains("餐饮费")) {
                 dto.setMealAmount(dto.getMealAmount().add(standardAmount));
                 dto.setMealActualAmount(dto.getMealActualAmount().add(actualAmount));
-            } else if (7 == type || (expenseItemDO.getItemCategoryName() != null && expenseItemDO.getItemCategoryName().contains("服务费"))) {
+            } else if ((type != null  && 7 == type) ||  expenseItemDO.getItemName().contains("服务费")) {
                 dto.setServiceAmount(dto.getServiceAmount().add(standardAmount));
                 dto.setServiceActualAmount(dto.getServiceActualAmount().add(actualAmount));
             }
@@ -387,11 +389,22 @@ public class OrderApiImpl implements OrderApi {
             }
         }
         BigDecimal extraAmount = dailyExpensesDO.getAmount() == null ? BigDecimal.ZERO : dailyExpensesDO.getAmount();
-        dto.setExtraServiceAmount(dto.getExtraServiceAmount().add(extraAmount));
+        if (isWaterElectricityItem(itemName)) {
+            BigDecimal currentAmount = dto.getOrderWaterElectricityAmount() == null ? BigDecimal.ZERO : dto.getOrderWaterElectricityAmount();
+            dto.setOrderWaterElectricityAmount(currentAmount.add(extraAmount));
+        } else {
+            dto.setExtraServiceAmount(dto.getExtraServiceAmount().add(extraAmount));
+        }
         dto.setAdjustAmount(dto.getAdjustAmount().add(extraAmount));
         dto.setRemark((dto.getRemark() == null ? "" : dto.getRemark()) + dailyExpensesDO.getRemarks() + itemName + ":" + dailyExpensesDO.getAmount());
     }
 
+    /** 判断是否为水电费相关项目 */
+    private boolean isWaterElectricityItem(String itemName) {
+        return itemName != null
+                && (itemName.contains("水费") || itemName.contains("电费") || itemName.contains("水电费"));
+    }
+
     /** 汇总标准/实际合计及占比 */
     private void computeTotals(OrderItemRespDTO dto) {
         BigDecimal standardTotal = dto.getBedAmount()
@@ -571,19 +584,7 @@ public class OrderApiImpl implements OrderApi {
         LocalDate queryMonthStart = queryYm.atDay(1);
         LocalDate queryMonthEnd = queryYm.atEndOfMonth();
 
-        // 1) 新入住:入住时间落在查询月份内 => 状态显示“新入住”
-        if (dto.getCheckInTime() != null) {
-            LocalDate checkInDate = dto.getCheckInTime().toInstant()
-                    .atZone(java.time.ZoneId.systemDefault())
-                    .toLocalDate();
-            if (!checkInDate.isBefore(queryMonthStart) && !checkInDate.isAfter(queryMonthEnd)) {
-                // 用 inStatus=3 表示“新入住”(仅用于展示,不回写数据库)
-                dto.setInStatus(3);
-                return;
-            }
-        }
-
-        // 2) 退住按月份修正:当前状态为退住,但退住日期在查询月份之后 => 该月仍视为在住
+        // 1) 退住按月份修正:当前状态为退住,但退住日期在查询月份之后 => 该月仍视为在住
         if (dto.getInStatus() != null && dto.getInStatus() == 2) {
             if (dto.getCheckOutTime() == null) {
                 // 没有退住时间时保持原样,避免误判
@@ -596,8 +597,22 @@ public class OrderApiImpl implements OrderApi {
 
             if (checkOutDate.isAfter(queryMonthEnd)) {
                 dto.setInStatus(1);
+            }else {
+                return;
             }
         }
+
+        // 2) 新入住:入住时间落在查询月份内 => 状态显示“新入住”
+        if (dto.getCheckInTime() != null) {
+            LocalDate checkInDate = dto.getCheckInTime().toInstant()
+                    .atZone(java.time.ZoneId.systemDefault())
+                    .toLocalDate();
+            if (!checkInDate.isBefore(queryMonthStart) && !checkInDate.isAfter(queryMonthEnd)) {
+                // 用 inStatus=3 表示“新入住”(仅用于展示,不回写数据库)
+                dto.setInStatus(3);
+            }
+        }
+
     }
 
     /**
@@ -632,7 +647,7 @@ public class OrderApiImpl implements OrderApi {
         orderItemRespVO.setBedName(orderItemRespDTO.getBedName() == null ? "" : orderItemRespDTO.getBedName());
         
         // 房间类型
-        orderItemRespVO.setItemName(orderItemRespDTO.getItemName() == null ? "" : orderItemRespDTO.getItemName());
+        orderItemRespVO.setBedItemName(orderItemRespDTO.getBedItemName() == null ? "" : orderItemRespDTO.getBedItemName());
         
         // 护理等级
         orderItemRespVO.setNurseLevelName(orderItemRespDTO.getNurseLevelName() == null ? "" : orderItemRespDTO.getNurseLevelName());

+ 77 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyDangerMaterialRegisterController.java

@@ -0,0 +1,77 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterSaveReqVO;
+import cn.iocoder.yudao.module.system.service.biz.ElderlyDangerMaterialRegisterService;
+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 static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 危险物品登记")
+@RestController
+@RequestMapping("/elderly-danger-material-register")
+@Validated
+public class ElderlyDangerMaterialRegisterController {
+
+    @Resource
+    private ElderlyDangerMaterialRegisterService elderlyDangerMaterialRegisterService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建危险物品登记")
+    public CommonResult<Long> create(@Valid @RequestBody ElderlyDangerMaterialRegisterSaveReqVO createReqVO) {
+        if (createReqVO.getTenantId() == null) {
+            createReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        return success(elderlyDangerMaterialRegisterService.create(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新危险物品登记")
+    @TenantIgnore
+    public CommonResult<Boolean> update(@Valid @RequestBody ElderlyDangerMaterialRegisterSaveReqVO updateReqVO) {
+        if (updateReqVO.getTenantId() == null) {
+            updateReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        elderlyDangerMaterialRegisterService.update(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除危险物品登记")
+    @Parameter(name = "id", description = "编号", required = true)
+    @TenantIgnore
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        elderlyDangerMaterialRegisterService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得危险物品登记详情")
+    @Parameter(name = "id", description = "编号", required = true, example = "1")
+    @TenantIgnore
+    public CommonResult<ElderlyDangerMaterialRegisterRespVO> get(@RequestParam("id") Long id) {
+        return success(elderlyDangerMaterialRegisterService.get(id));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得危险物品登记分页")
+    @TenantIgnore
+    public CommonResult<PageResult<ElderlyDangerMaterialRegisterRespVO>> page(@Valid ElderlyDangerMaterialRegisterPageReqVO pageReqVO) {
+        if (pageReqVO.getTenantIds() == null) {
+            pageReqVO.setTenantIds(new Long[]{TenantContextHolder.getTenantId()});
+        }
+        return success(elderlyDangerMaterialRegisterService.getPage(pageReqVO));
+    }
+}

+ 77 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyDisinfectRecordController.java

@@ -0,0 +1,77 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordSaveReqVO;
+import cn.iocoder.yudao.module.system.service.biz.ElderlyDisinfectRecordService;
+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 static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 消毒记录")
+@RestController
+@RequestMapping("/elderly-disinfect-record")
+@Validated
+public class ElderlyDisinfectRecordController {
+
+    @Resource
+    private ElderlyDisinfectRecordService elderlyDisinfectRecordService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建消毒记录")
+    public CommonResult<Long> create(@Valid @RequestBody ElderlyDisinfectRecordSaveReqVO createReqVO) {
+        if (createReqVO.getTenantId() == null) {
+            createReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        return success(elderlyDisinfectRecordService.create(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新消毒记录")
+    @TenantIgnore
+    public CommonResult<Boolean> update(@Valid @RequestBody ElderlyDisinfectRecordSaveReqVO updateReqVO) {
+        if (updateReqVO.getTenantId() == null) {
+            updateReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        elderlyDisinfectRecordService.update(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除消毒记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    @TenantIgnore
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        elderlyDisinfectRecordService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得消毒记录详情")
+    @Parameter(name = "id", description = "编号", required = true, example = "1")
+    @TenantIgnore
+    public CommonResult<ElderlyDisinfectRecordRespVO> get(@RequestParam("id") Long id) {
+        return success(elderlyDisinfectRecordService.get(id));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得消毒记录分页")
+    @TenantIgnore
+    public CommonResult<PageResult<ElderlyDisinfectRecordRespVO>> page(@Valid ElderlyDisinfectRecordPageReqVO pageReqVO) {
+        if (pageReqVO.getTenantIds() == null) {
+            pageReqVO.setTenantIds(new Long[]{TenantContextHolder.getTenantId()});
+        }
+        return success(elderlyDisinfectRecordService.getPage(pageReqVO));
+    }
+}

+ 77 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyFacilityEquipmentCheckController.java

@@ -0,0 +1,77 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckSaveReqVO;
+import cn.iocoder.yudao.module.system.service.biz.ElderlyFacilityEquipmentCheckService;
+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 static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 设施设备检查记录")
+@RestController
+@RequestMapping("/elderly-facility-equipment-check")
+@Validated
+public class ElderlyFacilityEquipmentCheckController {
+
+    @Resource
+    private ElderlyFacilityEquipmentCheckService elderlyFacilityEquipmentCheckService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建设施设备检查记录")
+    public CommonResult<Long> create(@Valid @RequestBody ElderlyFacilityEquipmentCheckSaveReqVO createReqVO) {
+        if (createReqVO.getTenantId() == null) {
+            createReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        return success(elderlyFacilityEquipmentCheckService.create(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新设施设备检查记录")
+    @TenantIgnore
+    public CommonResult<Boolean> update(@Valid @RequestBody ElderlyFacilityEquipmentCheckSaveReqVO updateReqVO) {
+        if (updateReqVO.getTenantId() == null) {
+            updateReqVO.setTenantId(TenantContextHolder.getTenantId());
+        }
+        elderlyFacilityEquipmentCheckService.update(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除设施设备检查记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    @TenantIgnore
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        elderlyFacilityEquipmentCheckService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得设施设备检查记录详情")
+    @Parameter(name = "id", description = "编号", required = true, example = "1")
+    @TenantIgnore
+    public CommonResult<ElderlyFacilityEquipmentCheckRespVO> get(@RequestParam("id") Long id) {
+        return success(elderlyFacilityEquipmentCheckService.get(id));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得设施设备检查记录分页")
+    @TenantIgnore
+    public CommonResult<PageResult<ElderlyFacilityEquipmentCheckRespVO>> page(@Valid ElderlyFacilityEquipmentCheckPageReqVO pageReqVO) {
+        if (pageReqVO.getTenantIds() == null) {
+            pageReqVO.setTenantIds(new Long[]{TenantContextHolder.getTenantId()});
+        }
+        return success(elderlyFacilityEquipmentCheckService.getPage(pageReqVO));
+    }
+}

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

@@ -33,7 +33,6 @@ public class ElderlyFixedExpenseAppendReqVO {
     private String itemName;
 
     @Schema(description = "费用具体类型,1:床位费,2:护理费,3:膳食费,7:服务费等", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "费用类型不能为空")
     private Integer type;
 
     @Schema(description = "单价(原价)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1800")

+ 33 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydangermaterialregister/ElderlyDangerMaterialRegisterPageReqVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister;
+
+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 ElderlyDangerMaterialRegisterPageReqVO extends PageParam {
+
+    @Schema(description = "长者姓名")
+    private String elderName;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate[] assessDate;
+
+    @Schema(description = "机构id数组")
+    private Long[] tenantIds;
+}
+

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

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+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
+public class ElderlyDangerMaterialRegisterRespVO {
+
+    @Schema(description = "id", example = "1")
+    private Long id;
+
+    @Schema(description = "长者id", example = "1")
+    private Long elderId;
+
+    @Schema(description = "长者姓名")
+    private String elderName;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Long buildId;
+
+    @Schema(description = "楼层id", example = "1")
+    private Long floorId;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
+    private LocalDate assessDate;
+
+    @Schema(description = "登记数据")
+    private String assessData;
+
+    @Schema(description = "档案号")
+    private String fileNumber;
+
+    @Schema(description = "入院日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
+    private Date checkInTime;
+
+    @Schema(description = "床位号")
+    private String bedName;
+
+    @Schema(description = "机构id", example = "1")
+    private Long tenantId;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "创建人")
+    private String creator;
+
+    @Schema(description = "更新人")
+    private String updater;
+}
+

+ 50 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydangermaterialregister/ElderlyDangerMaterialRegisterSaveReqVO.java

@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
+
+@Schema(description = "管理后台 - 危险物品登记新增/修改 Request VO")
+@Data
+public class ElderlyDangerMaterialRegisterSaveReqVO {
+
+    @Schema(description = "id(修改时必传)", example = "1")
+    private Long id;
+
+    @Schema(description = "长者id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "长者id不能为空")
+    private Long elderId;
+
+    @Schema(description = "长者姓名", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "长者姓名不能为空")
+    private String elderName;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Long buildId;
+
+    @Schema(description = "楼层id", example = "1")
+    private Long floorId;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
+    private LocalDate assessDate;
+
+    @Schema(description = "登记数据")
+    private String assessData;
+
+    @Schema(description = "机构id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "机构id不能为空")
+    private Long tenantId;
+}
+

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

@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord;
+
+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 ElderlyDisinfectRecordPageReqVO extends PageParam {
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate[] assessDate;
+
+    @Schema(description = "机构id数组")
+    private Long[] tenantIds;
+}

+ 52 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydisinfectrecord/ElderlyDisinfectRecordRespVO.java

@@ -0,0 +1,52 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 消毒记录 Response VO")
+@Data
+public class ElderlyDisinfectRecordRespVO {
+
+    @Schema(description = "id", example = "1")
+    private Long id;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Long buildId;
+
+    @Schema(description = "楼层id", example = "1")
+    private Long floorId;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = "GMT+8")
+    private LocalDate assessDate;
+
+    @Schema(description = "消毒数据")
+    private String assessData;
+
+    @Schema(description = "机构id", example = "1")
+    private Long tenantId;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "创建人")
+    private String creator;
+
+    @Schema(description = "更新人")
+    private String updater;
+}

+ 40 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlydisinfectrecord/ElderlyDisinfectRecordSaveReqVO.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 消毒记录新增/修改 Request VO")
+@Data
+public class ElderlyDisinfectRecordSaveReqVO {
+
+    @Schema(description = "id(修改时必传)", example = "1")
+    private Long id;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Long buildId;
+
+    @Schema(description = "楼层id", example = "1")
+    private Long floorId;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = "GMT+8")
+    private LocalDate assessDate;
+
+    @Schema(description = "消毒数据")
+    private String assessData;
+
+    @Schema(description = "机构id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "机构id不能为空")
+    private Long tenantId;
+}

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

@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck;
+
+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 ElderlyFacilityEquipmentCheckPageReqVO extends PageParam {
+
+    @Schema(description = "检查人")
+    private String assessor;
+
+    @Schema(description = "检查日期范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate[] assessDate;
+
+    @Schema(description = "机构id数组")
+    private Long[] tenantIds;
+}

+ 58 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyfacilityequipmentcheck/ElderlyFacilityEquipmentCheckRespVO.java

@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 设施设备检查记录 Response VO")
+@Data
+public class ElderlyFacilityEquipmentCheckRespVO {
+
+    @Schema(description = "id", example = "1")
+    private Long id;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Long buildId;
+
+    @Schema(description = "楼层id", example = "1")
+    private Long floorId;
+
+    @Schema(description = "检查人")
+    private String assessor;
+
+    @Schema(description = "检查日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = "GMT+8")
+    private LocalDate assessDate;
+
+    @Schema(description = "检查数据")
+    private String assessData;
+
+    @Schema(description = "检查情况说明")
+    private String checkSituationRemark;
+
+    @Schema(description = "检查人签名")
+    private String checkSignature;
+
+    @Schema(description = "机构id", example = "1")
+    private Long tenantId;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "创建人")
+    private String creator;
+
+    @Schema(description = "更新人")
+    private String updater;
+}

+ 46 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/elderlyfacilityequipmentcheck/ElderlyFacilityEquipmentCheckSaveReqVO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 设施设备检查记录新增/修改 Request VO")
+@Data
+public class ElderlyFacilityEquipmentCheckSaveReqVO {
+
+    @Schema(description = "id(修改时必传)", example = "1")
+    private Long id;
+
+    @Schema(description = "楼栋id", example = "1")
+    private Long buildId;
+
+    @Schema(description = "楼层id", example = "1")
+    private Long floorId;
+
+    @Schema(description = "检查人")
+    private String assessor;
+
+    @Schema(description = "检查日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = "GMT+8")
+    private LocalDate assessDate;
+
+    @Schema(description = "检查数据")
+    private String assessData;
+
+    @Schema(description = "检查情况说明")
+    private String checkSituationRemark;
+
+    @Schema(description = "检查人签名")
+    private String checkSignature;
+
+    @Schema(description = "机构id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "机构id不能为空")
+    private Long tenantId;
+}

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

@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.biz;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseNoDeleteDO;
+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.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+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;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
+
+/**
+ * 危险物品登记 DO
+ */
+@TableName("elderly_danger_material_register")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ElderlyDangerMaterialRegisterDO extends BaseNoDeleteDO {
+
+    @TableId
+    private Long id;
+
+    @Schema(description = "长者id")
+    private Long elderId;
+
+    @Schema(description = "长者姓名")
+    private String elderName;
+
+    @Schema(description = "楼栋id")
+    private Long buildId;
+
+    @Schema(description = "楼层id")
+    private Long floorId;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
+    private LocalDate assessDate;
+
+    @Schema(description = "登记数据")
+    private String assessData;
+
+    @Schema(description = "机构id")
+    private Long tenantId;
+}
+

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

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.biz;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseNoDeleteDO;
+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.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+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;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
+
+/**
+ * 消毒记录 DO
+ */
+@TableName("elderly_disinfect_record")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ElderlyDisinfectRecordDO extends BaseNoDeleteDO {
+
+    @TableId
+    private Long id;
+
+    @Schema(description = "楼栋id")
+    private Long buildId;
+
+    @Schema(description = "楼层id")
+    private Long floorId;
+
+    @Schema(description = "登记人")
+    private String assessor;
+
+    @Schema(description = "登记日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
+    private LocalDate assessDate;
+
+    @Schema(description = "消毒数据")
+    private String assessData;
+
+    @Schema(description = "机构id")
+    private Long tenantId;
+}

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

@@ -0,0 +1,61 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.biz;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseNoDeleteDO;
+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.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+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;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
+
+/**
+ * 设施设备检查记录 DO
+ */
+@TableName("elderly_facility_equipment_check")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ElderlyFacilityEquipmentCheckDO extends BaseNoDeleteDO {
+
+    @TableId
+    private Long id;
+
+    @Schema(description = "楼栋id")
+    private Long buildId;
+
+    @Schema(description = "楼层id")
+    private Long floorId;
+
+    @Schema(description = "检查人")
+    private String assessor;
+
+    @Schema(description = "检查日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
+    private LocalDate assessDate;
+
+    @Schema(description = "检查数据")
+    private String assessData;
+
+    @Schema(description = "检查情况说明")
+    private String checkSituationRemark;
+
+    @Schema(description = "检查人签名")
+    private String checkSignature;
+
+    @Schema(description = "机构id")
+    private Long tenantId;
+}

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

@@ -43,5 +43,7 @@ public interface ElderlyBuildFloorActivityImageMapper extends BaseMapperX<Elderl
 
 
 
+
+
 
 

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

@@ -0,0 +1,22 @@
+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.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyDangerMaterialRegisterDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ElderlyDangerMaterialRegisterMapper extends BaseMapperX<ElderlyDangerMaterialRegisterDO> {
+
+    default PageResult<ElderlyDangerMaterialRegisterDO> selectPage(ElderlyDangerMaterialRegisterPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ElderlyDangerMaterialRegisterDO>()
+                .likeIfPresent(ElderlyDangerMaterialRegisterDO::getElderName, reqVO.getElderName())
+                .likeIfPresent(ElderlyDangerMaterialRegisterDO::getAssessor, reqVO.getAssessor())
+                .betweenIfPresent(ElderlyDangerMaterialRegisterDO::getAssessDate, reqVO.getAssessDate())
+                .inIfPresent(ElderlyDangerMaterialRegisterDO::getTenantId, reqVO.getTenantIds())
+                .orderByDesc(ElderlyDangerMaterialRegisterDO::getAssessDate, ElderlyDangerMaterialRegisterDO::getId));
+    }
+}
+

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

@@ -0,0 +1,20 @@
+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.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyDisinfectRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ElderlyDisinfectRecordMapper extends BaseMapperX<ElderlyDisinfectRecordDO> {
+
+    default PageResult<ElderlyDisinfectRecordDO> selectPage(ElderlyDisinfectRecordPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ElderlyDisinfectRecordDO>()
+                .likeIfPresent(ElderlyDisinfectRecordDO::getAssessor, reqVO.getAssessor())
+                .betweenIfPresent(ElderlyDisinfectRecordDO::getAssessDate, reqVO.getAssessDate())
+                .inIfPresent(ElderlyDisinfectRecordDO::getTenantId, reqVO.getTenantIds())
+                .orderByDesc(ElderlyDisinfectRecordDO::getAssessDate, ElderlyDisinfectRecordDO::getId));
+    }
+}

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

@@ -0,0 +1,20 @@
+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.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyFacilityEquipmentCheckDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ElderlyFacilityEquipmentCheckMapper extends BaseMapperX<ElderlyFacilityEquipmentCheckDO> {
+
+    default PageResult<ElderlyFacilityEquipmentCheckDO> selectPage(ElderlyFacilityEquipmentCheckPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ElderlyFacilityEquipmentCheckDO>()
+                .likeIfPresent(ElderlyFacilityEquipmentCheckDO::getAssessor, reqVO.getAssessor())
+                .betweenIfPresent(ElderlyFacilityEquipmentCheckDO::getAssessDate, reqVO.getAssessDate())
+                .inIfPresent(ElderlyFacilityEquipmentCheckDO::getTenantId, reqVO.getTenantIds())
+                .orderByDesc(ElderlyFacilityEquipmentCheckDO::getAssessDate, ElderlyFacilityEquipmentCheckDO::getId));
+    }
+}

+ 20 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDangerMaterialRegisterService.java

@@ -0,0 +1,20 @@
+package cn.iocoder.yudao.module.system.service.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterSaveReqVO;
+
+public interface ElderlyDangerMaterialRegisterService {
+
+    Long create(ElderlyDangerMaterialRegisterSaveReqVO createReqVO);
+
+    void update(ElderlyDangerMaterialRegisterSaveReqVO updateReqVO);
+
+    void delete(Long id);
+
+    ElderlyDangerMaterialRegisterRespVO get(Long id);
+
+    PageResult<ElderlyDangerMaterialRegisterRespVO> getPage(ElderlyDangerMaterialRegisterPageReqVO pageReqVO);
+}
+

+ 80 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDangerMaterialRegisterServiceImpl.java

@@ -0,0 +1,80 @@
+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.elderlydangermaterialregister.ElderlyDangerMaterialRegisterPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydangermaterialregister.ElderlyDangerMaterialRegisterSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyDangerMaterialRegisterDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyDangerMaterialRegisterMapper;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyInfoMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.COMMON_NOT_FOUND;
+
+@Service
+@Validated
+public class ElderlyDangerMaterialRegisterServiceImpl implements ElderlyDangerMaterialRegisterService {
+
+    @Resource
+    private ElderlyDangerMaterialRegisterMapper elderlyDangerMaterialRegisterMapper;
+
+    @Resource
+    private ElderlyInfoMapper elderlyInfoMapper;
+
+    @Override
+    public Long create(ElderlyDangerMaterialRegisterSaveReqVO createReqVO) {
+        ElderlyDangerMaterialRegisterDO record = BeanUtils.toBean(createReqVO, ElderlyDangerMaterialRegisterDO.class);
+        elderlyDangerMaterialRegisterMapper.insert(record);
+        return record.getId();
+    }
+
+    @Override
+    public void update(ElderlyDangerMaterialRegisterSaveReqVO updateReqVO) {
+        validateExists(updateReqVO.getId());
+        ElderlyDangerMaterialRegisterDO updateObj = BeanUtils.toBean(updateReqVO, ElderlyDangerMaterialRegisterDO.class);
+        elderlyDangerMaterialRegisterMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void delete(Long id) {
+        validateExists(id);
+        elderlyDangerMaterialRegisterMapper.deleteById(id);
+    }
+
+    @Override
+    public ElderlyDangerMaterialRegisterRespVO get(Long id) {
+        ElderlyDangerMaterialRegisterDO record = elderlyDangerMaterialRegisterMapper.selectById(id);
+        if (record == null) {
+            throw exception(COMMON_NOT_FOUND);
+        }
+        ElderlyDangerMaterialRegisterRespVO respVO = BeanUtils.toBean(record, ElderlyDangerMaterialRegisterRespVO.class);
+        if (record.getElderId() != null) {
+            ElderlyInfoDO elderlyInfo = elderlyInfoMapper.selectById(record.getElderId());
+            if (elderlyInfo != null) {
+                respVO.setFileNumber(elderlyInfo.getFileNumber());
+                respVO.setCheckInTime(elderlyInfo.getCheckInTime());
+                respVO.setBedName(elderlyInfo.getBedName());
+            }
+        }
+        return respVO;
+    }
+
+    @Override
+    public PageResult<ElderlyDangerMaterialRegisterRespVO> getPage(ElderlyDangerMaterialRegisterPageReqVO pageReqVO) {
+        PageResult<ElderlyDangerMaterialRegisterDO> pageResult = elderlyDangerMaterialRegisterMapper.selectPage(pageReqVO);
+        return BeanUtils.toBean(pageResult, ElderlyDangerMaterialRegisterRespVO.class);
+    }
+
+    private void validateExists(Long id) {
+        if (id == null || elderlyDangerMaterialRegisterMapper.selectById(id) == null) {
+            throw exception(COMMON_NOT_FOUND);
+        }
+    }
+}
+

+ 19 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDisinfectRecordService.java

@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.system.service.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordSaveReqVO;
+
+public interface ElderlyDisinfectRecordService {
+
+    Long create(ElderlyDisinfectRecordSaveReqVO createReqVO);
+
+    void update(ElderlyDisinfectRecordSaveReqVO updateReqVO);
+
+    void delete(Long id);
+
+    ElderlyDisinfectRecordRespVO get(Long id);
+
+    PageResult<ElderlyDisinfectRecordRespVO> getPage(ElderlyDisinfectRecordPageReqVO pageReqVO);
+}

+ 65 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyDisinfectRecordServiceImpl.java

@@ -0,0 +1,65 @@
+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.elderlydisinfectrecord.ElderlyDisinfectRecordPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlydisinfectrecord.ElderlyDisinfectRecordSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyDisinfectRecordDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyDisinfectRecordMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.COMMON_NOT_FOUND;
+
+@Service
+@Validated
+public class ElderlyDisinfectRecordServiceImpl implements ElderlyDisinfectRecordService {
+
+    @Resource
+    private ElderlyDisinfectRecordMapper elderlyDisinfectRecordMapper;
+
+    @Override
+    public Long create(ElderlyDisinfectRecordSaveReqVO createReqVO) {
+        ElderlyDisinfectRecordDO record = BeanUtils.toBean(createReqVO, ElderlyDisinfectRecordDO.class);
+        elderlyDisinfectRecordMapper.insert(record);
+        return record.getId();
+    }
+
+    @Override
+    public void update(ElderlyDisinfectRecordSaveReqVO updateReqVO) {
+        validateExists(updateReqVO.getId());
+        ElderlyDisinfectRecordDO updateObj = BeanUtils.toBean(updateReqVO, ElderlyDisinfectRecordDO.class);
+        elderlyDisinfectRecordMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void delete(Long id) {
+        validateExists(id);
+        elderlyDisinfectRecordMapper.deleteById(id);
+    }
+
+    @Override
+    public ElderlyDisinfectRecordRespVO get(Long id) {
+        ElderlyDisinfectRecordDO record = elderlyDisinfectRecordMapper.selectById(id);
+        if (record == null) {
+            throw exception(COMMON_NOT_FOUND);
+        }
+        return BeanUtils.toBean(record, ElderlyDisinfectRecordRespVO.class);
+    }
+
+    @Override
+    public PageResult<ElderlyDisinfectRecordRespVO> getPage(ElderlyDisinfectRecordPageReqVO pageReqVO) {
+        PageResult<ElderlyDisinfectRecordDO> pageResult = elderlyDisinfectRecordMapper.selectPage(pageReqVO);
+        return BeanUtils.toBean(pageResult, ElderlyDisinfectRecordRespVO.class);
+    }
+
+    private void validateExists(Long id) {
+        if (id == null || elderlyDisinfectRecordMapper.selectById(id) == null) {
+            throw exception(COMMON_NOT_FOUND);
+        }
+    }
+}

+ 19 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyFacilityEquipmentCheckService.java

@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.system.service.biz;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckSaveReqVO;
+
+public interface ElderlyFacilityEquipmentCheckService {
+
+    Long create(ElderlyFacilityEquipmentCheckSaveReqVO createReqVO);
+
+    void update(ElderlyFacilityEquipmentCheckSaveReqVO updateReqVO);
+
+    void delete(Long id);
+
+    ElderlyFacilityEquipmentCheckRespVO get(Long id);
+
+    PageResult<ElderlyFacilityEquipmentCheckRespVO> getPage(ElderlyFacilityEquipmentCheckPageReqVO pageReqVO);
+}

+ 65 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyFacilityEquipmentCheckServiceImpl.java

@@ -0,0 +1,65 @@
+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.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.biz.vo.elderlyfacilityequipmentcheck.ElderlyFacilityEquipmentCheckSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyFacilityEquipmentCheckDO;
+import cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyFacilityEquipmentCheckMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.COMMON_NOT_FOUND;
+
+@Service
+@Validated
+public class ElderlyFacilityEquipmentCheckServiceImpl implements ElderlyFacilityEquipmentCheckService {
+
+    @Resource
+    private ElderlyFacilityEquipmentCheckMapper elderlyFacilityEquipmentCheckMapper;
+
+    @Override
+    public Long create(ElderlyFacilityEquipmentCheckSaveReqVO createReqVO) {
+        ElderlyFacilityEquipmentCheckDO record = BeanUtils.toBean(createReqVO, ElderlyFacilityEquipmentCheckDO.class);
+        elderlyFacilityEquipmentCheckMapper.insert(record);
+        return record.getId();
+    }
+
+    @Override
+    public void update(ElderlyFacilityEquipmentCheckSaveReqVO updateReqVO) {
+        validateExists(updateReqVO.getId());
+        ElderlyFacilityEquipmentCheckDO updateObj = BeanUtils.toBean(updateReqVO, ElderlyFacilityEquipmentCheckDO.class);
+        elderlyFacilityEquipmentCheckMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void delete(Long id) {
+        validateExists(id);
+        elderlyFacilityEquipmentCheckMapper.deleteById(id);
+    }
+
+    @Override
+    public ElderlyFacilityEquipmentCheckRespVO get(Long id) {
+        ElderlyFacilityEquipmentCheckDO record = elderlyFacilityEquipmentCheckMapper.selectById(id);
+        if (record == null) {
+            throw exception(COMMON_NOT_FOUND);
+        }
+        return BeanUtils.toBean(record, ElderlyFacilityEquipmentCheckRespVO.class);
+    }
+
+    @Override
+    public PageResult<ElderlyFacilityEquipmentCheckRespVO> getPage(ElderlyFacilityEquipmentCheckPageReqVO pageReqVO) {
+        PageResult<ElderlyFacilityEquipmentCheckDO> pageResult = elderlyFacilityEquipmentCheckMapper.selectPage(pageReqVO);
+        return BeanUtils.toBean(pageResult, ElderlyFacilityEquipmentCheckRespVO.class);
+    }
+
+    private void validateExists(Long id) {
+        if (id == null || elderlyFacilityEquipmentCheckMapper.selectById(id) == null) {
+            throw exception(COMMON_NOT_FOUND);
+        }
+    }
+}

+ 52 - 47
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ExpenseServiceImpl.java

@@ -592,65 +592,70 @@ public class ExpenseServiceImpl implements ExpenseService {
      */
     private void reconcileCurrentMonthBillAfterAppend(Long elderId, Long tenantId, ExpenseItemDO item,
                                                       String targetBillingMonth, LocalDate startDate, LocalDate endDate) {
-        ExpenseOrderDO currentOrder = expenseOrderMapper.selectOne(new LambdaQueryWrapperX<ExpenseOrderDO>()
+        List<ExpenseOrderDO> currentOrderList = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
                 .eq(ExpenseOrderDO::getElderId, elderId)
-                .eq(ExpenseOrderDO::getBillingMonth, targetBillingMonth)
+                .ge(ExpenseOrderDO::getBillingMonth, targetBillingMonth)
                 .in(ExpenseOrderDO::getType, 2, 3)
                 .eq(tenantId != null, ExpenseOrderDO::getTenantId, tenantId)
                 .orderByDesc(ExpenseOrderDO::getCreatedTime)
                 .last("LIMIT 1"));
 
-        if (currentOrder == null) {
+        if (currentOrderList == null) {
             return;
         }
-        if (Boolean.TRUE.equals(currentOrder.getConfirmStatus()) || Boolean.TRUE.equals(currentOrder.getIsLock())) {
-            throw exceptionCustomMsg(ErrorCodeConstants.COMMON_ERROR, "当月账单已确认或已锁定,无法自动补差");
-        }
+        for (ExpenseOrderDO currentOrder : currentOrderList) {
+            if (Boolean.TRUE.equals(currentOrder.getConfirmStatus()) || Boolean.TRUE.equals(currentOrder.getIsLock())) {
+                throw exceptionCustomMsg(ErrorCodeConstants.COMMON_ERROR, "当月账单已确认或已锁定,无法自动补差");
+            }
 
-        YearMonth billingYm = YearMonth.parse(targetBillingMonth, DateTimeFormatter.ofPattern("yyyy-MM"));
-        LocalDate billStart = billingYm.atDay(1);
-        LocalDate billEnd = billingYm.atEndOfMonth();
+            YearMonth billingYm = YearMonth.parse(targetBillingMonth, DateTimeFormatter.ofPattern("yyyy-MM"));
+            LocalDate billStart = billingYm.atDay(1);
+            LocalDate billEnd = billingYm.atEndOfMonth();
 
-        LocalDate actualStart = startDate.isBefore(billStart) ? billStart : startDate;
-        LocalDate actualEnd = endDate.isAfter(billEnd) ? billEnd : endDate;
-        if (actualEnd.isBefore(actualStart)) {
-            return;
-        }
+            LocalDate actualStart = startDate.isBefore(billStart) ? billStart : startDate;
+            LocalDate actualEnd = endDate.isAfter(billEnd) ? billEnd : endDate;
+            if (actualEnd.isBefore(actualStart)) {
+                return;
+            }
 
-        long overlapDays = ChronoUnit.DAYS.between(actualStart, actualEnd) + 1;
-        int monthDays = billingYm.lengthOfMonth();
-        BigDecimal dayPrice = item.getActualAmount().divide(BigDecimal.valueOf(monthDays), 8, RoundingMode.DOWN);
-        BigDecimal billDeltaAmount = dayPrice.multiply(BigDecimal.valueOf(overlapDays)).setScale(2, RoundingMode.HALF_UP);
-        if (billDeltaAmount.compareTo(BigDecimal.ZERO) == 0) {
-            return;
-        }
+            long overlapDays = ChronoUnit.DAYS.between(actualStart, actualEnd) + 1;
+            int monthDays = billingYm.lengthOfMonth();
+            BigDecimal dayPrice = item.getActualAmount().divide(BigDecimal.valueOf(monthDays), 8, RoundingMode.DOWN);
+            BigDecimal billDeltaAmount = item.getActualAmount();
+            if(currentOrder.getBillingMonth().equals(targetBillingMonth)){
+                billDeltaAmount = dayPrice.multiply(BigDecimal.valueOf(overlapDays)).setScale(2, RoundingMode.HALF_UP);
+            }
+            if (billDeltaAmount.compareTo(BigDecimal.ZERO) == 0) {
+                return;
+            }
 
-        ExpenseOrderItemDO orderItem = new ExpenseOrderItemDO();
-        orderItem.setExpenseOrderId(currentOrder.getId());
-        orderItem.setSourceExpenseItemId(item.getId());
-        orderItem.setExpenseSource(BusinessConstants.EXPENSE_ITEM);
-        orderItem.setCount((int) overlapDays);
-        orderItem.setItemName(item.getItemName());
-        orderItem.setItemCategoryName(item.getItemCategoryName());
-        orderItem.setPrice(item.getAmount());
-        orderItem.setActualPrice(dayPrice);
-        orderItem.setTotalAmount(billDeltaAmount);
-        orderItem.setRoundAmount(billDeltaAmount.setScale(0, RoundingMode.HALF_UP));
-        orderItem.setRoundTwoDecimalAmount(billDeltaAmount.setScale(2, RoundingMode.HALF_UP));
-        orderItem.setCreatedTime(new Date());
-        orderItem.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
-        orderItem.setType(item.getType());
-        orderItem.setTenantId(tenantId);
-        orderItem.setStartDate(actualStart);
-        orderItem.setEndDate(actualEnd);
-        orderItem.setDescription("固定费项补差:" + actualStart + "至" + actualEnd + ",共" + overlapDays + "天," + item.getItemName());
-        expenseOrderItemMapper.insert(orderItem);
-
-        BigDecimal billAmount = currentOrder.getActualAmount() == null ? BigDecimal.ZERO : currentOrder.getActualAmount();
-        currentOrder.setActualAmount(billAmount.add(billDeltaAmount));
-        currentOrder.setPayStatus(BooleanEnum.FALSE.getValue());
-        currentOrder.setPayType(null);
-        expenseOrderMapper.updateById(currentOrder);
+            ExpenseOrderItemDO orderItem = new ExpenseOrderItemDO();
+            orderItem.setExpenseOrderId(currentOrder.getId());
+            orderItem.setSourceExpenseItemId(item.getId());
+            orderItem.setExpenseSource(BusinessConstants.EXPENSE_ITEM);
+            orderItem.setCount((int) overlapDays);
+            orderItem.setItemName(item.getItemName());
+            orderItem.setItemCategoryName(item.getItemCategoryName());
+            orderItem.setPrice(item.getAmount());
+            orderItem.setActualPrice(dayPrice);
+            orderItem.setTotalAmount(billDeltaAmount);
+            orderItem.setRoundAmount(billDeltaAmount.setScale(0, RoundingMode.HALF_UP));
+            orderItem.setRoundTwoDecimalAmount(billDeltaAmount.setScale(2, RoundingMode.HALF_UP));
+            orderItem.setCreatedTime(new Date());
+            orderItem.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
+            orderItem.setType(item.getType());
+            orderItem.setTenantId(tenantId);
+            orderItem.setStartDate(actualStart);
+            orderItem.setEndDate(actualEnd);
+            orderItem.setDescription("固定费项补差:" + actualStart + "至" + actualEnd + ",共" + overlapDays + "天," + item.getItemName());
+            expenseOrderItemMapper.insert(orderItem);
+
+            BigDecimal billAmount = currentOrder.getActualAmount() == null ? BigDecimal.ZERO : currentOrder.getActualAmount();
+            currentOrder.setActualAmount(billAmount.add(billDeltaAmount));
+            currentOrder.setPayStatus(BooleanEnum.FALSE.getValue());
+            currentOrder.setPayType(null);
+            expenseOrderMapper.updateById(currentOrder);
+        }
     }
 
     /**

+ 2 - 10
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ExpenseOrderMapper.xml

@@ -85,8 +85,6 @@
             ec.begin_time,
             ec.expire_time,
             ec.contract_term,
-
-            eei.item_name,
             ob.build_name,
             CONCAT_WS('-', bf.floor_name, br.room_name, obb.bed_name) AS bed_name,
             eesa.amount AS 'expenseSubsidyBalance',
@@ -95,14 +93,10 @@
             ei.tenant_id
         FROM
             elderly_info ei
-                INNER JOIN elderly_contract ec ON ei.id = ec.elder_id
+                LEFT JOIN elderly_contract ec ON ei.id = ec.elder_id
                     AND ec.status = 1
                 INNER JOIN elderly_expense_order eeo ON ei.id = eeo.elder_id
 
-                INNER JOIN elderly_expense ee ON ei.id = ee.elder_id
-                INNER JOIN elderly_expense_item eei ON eei.expense_id = ee.id
-                INNER JOIN sys_charge_category scc ON scc.id = eei.item_category_id
-
                 LEFT JOIN org_build ob ON ob.id = ei.build_id
                 LEFT JOIN org_build_bed obb ON ei.bed_id = obb.id
                 LEFT JOIN org_build_room br ON obb.room_id = br.id
@@ -110,7 +104,7 @@
                 LEFT JOIN elderly_expense_subsidy_account eesa ON eesa.elder_id = ei.id
                 LEFT JOIN elderly_balance eb ON eb.elder_id = ei.id
 
-        WHERE scc.identification = 1
+        WHERE 1=1
           <if test="billMonth != null">
               AND eeo.billing_month = #{billMonth}
           </if>
@@ -126,8 +120,6 @@
         <if test="payStatus != null">
             AND eeo.pay_status = #{payStatus}
         </if>
-          AND ee.created_time = (SELECT MAX(ee2.created_time) FROM elderly_expense ee2 WHERE ee2.elder_id = ei.id)
-        ORDER BY ee.created_time DESC
     </select>
 
     <select id="countLastInByMonth" resultType="java.lang.Integer">