Ver código fonte

新增
1、外出记录模块新增扫码人字段
2、外出分页增加外出类型字段过滤

liangwenxuan 4 semanas atrás
pai
commit
17647a37c3

+ 4 - 0
sql/mysql/alter_elderly_ask_leave_add_scaner.sql

@@ -0,0 +1,4 @@
+-- 老人请假表新增扫码人字段
+-- 记录出院/回院扫码操作人(取自当前登录用户昵称)
+ALTER TABLE `elderly_ask_leave`
+    ADD COLUMN `scaner` varchar(100) NOT NULL DEFAULT '' COMMENT '扫码人(出院/回院扫码操作人)' AFTER `request_type`;

+ 11 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/BedSwapRecordController.java

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.biz.vo.BedSwapRecordRespV
 import cn.iocoder.yudao.module.system.controller.admin.biz.vo.BedSwapRecordSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.BedSwapRecordDO;
 import cn.iocoder.yudao.module.system.service.biz.BedSwapRecordService;
+import cn.iocoder.yudao.module.system.service.biz.BuildService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -30,11 +31,20 @@ public class BedSwapRecordController {
     @Resource
     private BedSwapRecordService bedSwapRecordService;
 
+    @Resource
+    private BuildService buildService;
+
     @GetMapping("/page")
     @Operation(summary = "获得床位对调记录分页")
     @TenantIgnore
     public CommonResult<PageResult<BedSwapRecordRespVO>> getBedSwapRecordPage(@Valid BedSwapRecordPageReqVO pageReqVO) {
         PageResult<BedSwapRecordDO> pageResult = bedSwapRecordService.getBedSwapRecordPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, BedSwapRecordRespVO.class));
+        PageResult<BedSwapRecordRespVO> result = BeanUtils.toBean(pageResult, BedSwapRecordRespVO.class);
+        // 新床位名称返回全名称(楼-层-室-床)
+        for (BedSwapRecordRespVO respVO : result.getList()) {
+            respVO.setNewBedNameA(buildService.getFullBedNameByBedId(respVO.getNewBedIdA()));
+            respVO.setNewBedNameB(buildService.getFullBedNameByBedId(respVO.getNewBedIdB()));
+        }
+        return success(result);
     }
 }

+ 2 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/appointment/AppAppointmentQuotaController.java

@@ -44,6 +44,7 @@ public class AppAppointmentQuotaController {
     @PostMapping("/occupy")
     @Operation(summary = "校验并预占预约名额(调用实际预约接口前先调用)")
     @PermitAll
+    @TenantIgnore
     public CommonResult<AppointmentQuotaOccupyRespVO> occupy(@Valid @RequestBody AppointmentQuotaOccupyReqVO reqVO) {
         return success(appointmentQuotaService.occupy(reqVO));
     }
@@ -51,6 +52,7 @@ public class AppAppointmentQuotaController {
     @PostMapping("/release")
     @Operation(summary = "释放预约名额预占")
     @PermitAll
+    @TenantIgnore
     public CommonResult<Boolean> release(@Valid @RequestBody AppointmentQuotaOccupyReqVO reqVO) {
         appointmentQuotaService.release(reqVO);
         return success(true);

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

@@ -33,4 +33,7 @@ public class AskLeavePageReqVO extends PageParam {
 
     @Schema(description = "楼层id")
     private Long floorId;
+
+    @Schema(description = "申请类型:1、院区申请,2、家属申请", example = "1")
+    private Integer requestType;
 }

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

@@ -1,11 +1,14 @@
 package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
 
+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
 public class BedSwapRecordRespVO {
@@ -14,6 +17,7 @@ public class BedSwapRecordRespVO {
     private Long id;
 
     @Schema(description = "对调生效日期", example = "2024-10-01")
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDate swapDate;
 
     @Schema(description = "备注说明", example = "协商一致对调")

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

@@ -41,6 +41,36 @@ public class ElderlyAskLeaveDO implements Serializable {
      */
     public static final Integer REQUEST_TYPE_FAMILY = 2;
 
+    /**
+     * 状态展示类型 - 待出院(黄色):尚未扫码出院,out_date 为空
+     */
+    public static final Integer STATUS_TYPE_PENDING_OUT = 1;
+    /**
+     * 状态展示类型 - 待回院(红色):已扫码出院、尚未回院,out_date 非空且 update_date 为空
+     */
+    public static final Integer STATUS_TYPE_PENDING_RETURN = 2;
+    /**
+     * 状态展示类型 - 已完成(绿色):已回院,update_date 非空
+     */
+    public static final Integer STATUS_TYPE_COMPLETED = 3;
+
+    /**
+     * 根据出院扫码时间、回院扫码时间推导状态展示类型
+     *
+     * @param outDate    出院扫码时间
+     * @param updateDate 回院扫码时间
+     * @return 状态展示类型:1-待出院,2-待回院,3-已完成
+     */
+    public static Integer computeStatusType(Date outDate, Date updateDate) {
+        if (updateDate != null) {
+            return STATUS_TYPE_COMPLETED;
+        }
+        if (outDate != null) {
+            return STATUS_TYPE_PENDING_RETURN;
+        }
+        return STATUS_TYPE_PENDING_OUT;
+    }
+
     /**
      * 主键ID
      */
@@ -76,6 +106,11 @@ public class ElderlyAskLeaveDO implements Serializable {
      */
     @Schema(description = "外出登记人")
     private String outPerson;
+    /**
+     * 扫码人(出院/回院扫码操作人)
+     */
+    @Schema(description = "扫码人")
+    private String scaner;
     /**
      * 联系电话
      */
@@ -164,4 +199,11 @@ public class ElderlyAskLeaveDO implements Serializable {
     @Schema(description = "申请类型:1、院区申请,2、家属申请", example = "1")
     private Integer requestType;
 
+    /**
+     * 状态展示类型(非数据库字段,由 out_date / update_date 推导):1-待出院,2-待回院,3-已完成
+     */
+    @Schema(description = "状态展示类型:1-待出院,2-待回院,3-已完成", example = "1")
+    @TableField(exist = false)
+    private Integer statusType;
+
 }

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyAskLeaveServiceImpl.java

@@ -839,6 +839,9 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
             }
             elderlyAskLeaveDO.setElderlyInfo(elderlyInfoDO);
             elderlyAskLeaveDO.setTenantName(tenantMapper.selectById(elderlyAskLeaveDO.getTenantId()).getName());
+            // 计算状态展示类型:1-待出院,2-待回院,3-已完成
+            elderlyAskLeaveDO.setStatusType(ElderlyAskLeaveDO.computeStatusType(
+                    elderlyAskLeaveDO.getOutDate(), elderlyAskLeaveDO.getUpdateDate()));
         }
         return elderlyAskLeaveDOPageResult;
     }
@@ -852,6 +855,9 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
                 elderlyInfoDO.setBedName(buildService.getFullBedName(elderlyInfoDO.getId()));
             }
             elderlyAskLeaveDO.setElderlyInfo(elderlyInfoDO);
+            // 计算状态展示类型:1-待出院,2-待回院,3-已完成
+            elderlyAskLeaveDO.setStatusType(ElderlyAskLeaveDO.computeStatusType(
+                    elderlyAskLeaveDO.getOutDate(), elderlyAskLeaveDO.getUpdateDate()));
         }
         return elderlyAskLeaveDO;
     }
@@ -935,6 +941,7 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
             throw exception(ErrorCodeConstants.ELDERLY_LEAVE_SCAN_OUT_NOT_FOUND);
         }
         askLeave.setOutDate(new Date());
+        askLeave.setScaner(SecurityFrameworkUtils.getLoginUserNickname());
         elderlyAskLeaveMapper.updateById(askLeave);
     }
 
@@ -951,6 +958,7 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
             throw exception(ErrorCodeConstants.ELDERLY_LEAVE_SCAN_RETURN_NOT_FOUND);
         }
         askLeave.setUpdateDate(new Date());
+        askLeave.setScaner(SecurityFrameworkUtils.getLoginUserNickname());
         elderlyAskLeaveMapper.updateById(askLeave);
     }
 }

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ElderlyAskLeaveMapper.xml

@@ -11,6 +11,9 @@
         <if test="reqVO.orgType != null">
             AND eal.org_type = #{reqVO.orgType}
         </if>
+        <if test="reqVO.requestType != null">
+            AND eal.request_type = #{reqVO.requestType}
+        </if>
         <if test="reqVO.elderName != null and reqVO.elderName != ''">
             AND eal.elder_name LIKE concat('%', #{reqVO.elderName}, '%')
         </if>