소스 검색

修改
1、外出登记导出重构
BUGFIX
1、解决长者档案分页无法查看退住长者问题

liangwenxuan 1 주 전
부모
커밋
c07e25603f

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

@@ -109,7 +109,6 @@ public class ElderlyAskLeaveController {
     @ApiAccessLog(operateType = cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT)
     public void exportExcel(@Valid AskLeavePageReqVO reqVO, HttpServletResponse response) throws IOException {
         List<ElderlyAskLeaveExportExcelVO> list = elderlyAskLeaveService.getExportList(reqVO);
-        // 导出 Excel
         ExcelUtils.write(response, "老人外出请假.xls", "数据", ElderlyAskLeaveExportExcelVO.class, list);
     }
 

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

@@ -442,8 +442,9 @@ public class ElderlyInfoController {
     }
 
     @GetMapping("/getOtherFilesStatistics")
-    @Operation(summary = "获取当前机构 otherFiles 为空的统计信息")
-    public CommonResult<ElderlyOtherFilesStatisticsRespVO> getOtherFilesStatistics() {
-        return success(elderlyInfoService.getOtherFilesStatistics());
+    @Operation(summary = "获取机构 otherFiles 为空的统计信息")
+    public CommonResult<List<ElderlyOtherFilesStatisticsRespVO>> getOtherFilesStatistics(@RequestParam("tenantIds") Long[] tenantIds) {
+        tenantIds = Objects.isNull(tenantIds) ? new Long[]{TenantContextHolder.getTenantId()} : tenantIds;
+        return success(elderlyInfoService.getOtherFilesStatistics(tenantIds));
     }
 }

+ 12 - 11
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/vo/ElderlyAskLeaveExportExcelVO.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.system.controller.admin.biz.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -12,6 +14,8 @@ import java.time.LocalDate;
 import java.time.ZoneId;
 import java.util.Date;
 
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
 @Data
 @Builder
 @AllArgsConstructor
@@ -21,15 +25,6 @@ public class ElderlyAskLeaveExportExcelVO {
     @ExcelProperty("老人姓名")
     private String elderName;
 
-    @ExcelProperty("楼栋名称")
-    private String buildName;
-
-    @ExcelProperty("楼层名称")
-    private String floorName;
-
-    @ExcelProperty("房间号")
-    private String roomName;
-
     @ExcelProperty("床位名称")
     private String bedName;
 
@@ -37,10 +32,16 @@ public class ElderlyAskLeaveExportExcelVO {
     private String accompanyPerson;
 
     @ExcelProperty("外出时间")
-    private LocalDate outDate;
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND,timezone = "GMT+8")
+    private Date outDate;
 
     @ExcelProperty("返回时间")
-    private LocalDate comeDate;
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND,timezone = "GMT+8")
+    private Date comeDate;
+
+    @ExcelProperty("实际返回时间")
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND,timezone = "GMT+8")
+    private Date updateDate;
 
     @ExcelProperty("外出登记人")
     private String outPerson;

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

@@ -25,4 +25,8 @@ public class ElderlyOtherFilesStatisticsRespVO {
      */
     private BigDecimal emptyOtherFilesPercentage;
 
+
+    private Long tenantId;
+    private String tenantName;
+
 }

+ 4 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyAskLeaveService.java

@@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.system.controller.admin.biz.vo.AskLeavePageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.biz.vo.ElderlyAskLeaveExportExcelVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyAskLeaveDO;
 
-import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -28,5 +27,8 @@ public interface ElderlyAskLeaveService {
 
     ElderlyAskLeaveDO getDetail(Long id);
 
-    List<ElderlyAskLeaveExportExcelVO> getExportList(@Valid AskLeavePageReqVO reqVO);
+    /**
+     * 获取导出数据列表,复用分页查询逻辑
+     */
+    List<ElderlyAskLeaveExportExcelVO> getExportList(AskLeavePageReqVO reqVO);
 }

+ 11 - 25
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyAskLeaveServiceImpl.java

@@ -856,25 +856,20 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
 
     @Override
     public List<ElderlyAskLeaveExportExcelVO> getExportList(AskLeavePageReqVO reqVO) {
-        // 设置不分页,导出全部数据
         reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        PageResult<ElderlyAskLeaveDO> pageResult = elderlyAskLeaveMapper.selectPage(reqVO);
-
-        List<ElderlyAskLeaveDO> list = pageResult.getList();
-        if (CollectionUtils.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-
-        // 填充老人信息和租户名称
+        // 复用分页查询逻辑,与列表展示字段一致
+        List<ElderlyAskLeaveDO> list = findPage(reqVO).getList();
         for (ElderlyAskLeaveDO elderlyAskLeaveDO : list) {
             ElderlyInfoDO elderlyInfoDO = elderlyInfoMapper.selectById(elderlyAskLeaveDO.getElderId());
-            if (elderlyInfoDO != null) {
+            if (elderlyInfoDO != null){
                 elderlyInfoDO.setBedName(buildService.getFullBedName(elderlyInfoDO.getId()));
             }
             elderlyAskLeaveDO.setElderlyInfo(elderlyInfoDO);
+            elderlyAskLeaveDO.setTenantName(tenantMapper.selectById(elderlyAskLeaveDO.getTenantId()).getName());
+        }
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyList();
         }
-
-        // 转换为导出VO
         return list.stream().map(this::convertToExportVO).collect(Collectors.toList());
     }
 
@@ -883,12 +878,12 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
      */
     private ElderlyAskLeaveExportExcelVO convertToExportVO(ElderlyAskLeaveDO elderlyAskLeaveDO) {
         ElderlyAskLeaveExportExcelVO exportVO = new ElderlyAskLeaveExportExcelVO();
-
         // 基础字段
         exportVO.setElderName(elderlyAskLeaveDO.getElderName());
         exportVO.setAccompanyPerson(elderlyAskLeaveDO.getAccompanyPerson());
-        exportVO.setOutDate(ElderlyAskLeaveExportExcelVO.convertToLocalDate(elderlyAskLeaveDO.getOutDate()));
-        exportVO.setComeDate(ElderlyAskLeaveExportExcelVO.convertToLocalDate(elderlyAskLeaveDO.getComeDate()));
+        exportVO.setOutDate(elderlyAskLeaveDO.getOutDate());
+        exportVO.setComeDate(elderlyAskLeaveDO.getComeDate());
+        exportVO.setUpdateDate(elderlyAskLeaveDO.getUpdateDate());
         exportVO.setOutPerson(elderlyAskLeaveDO.getOutPerson());
         exportVO.setOutPhone(elderlyAskLeaveDO.getOutPhone());
         exportVO.setRemarks(elderlyAskLeaveDO.getRemarks());
@@ -897,16 +892,7 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
         exportVO.setNumberDays(elderlyAskLeaveDO.getNumberDays());
         exportVO.setTenantName(elderlyAskLeaveDO.getTenantName());
         exportVO.setBelongMonth(elderlyAskLeaveDO.getBelongMonth());
-
-        // 老人信息(床位等)
-        ElderlyInfoDO elderlyInfo = elderlyAskLeaveDO.getElderlyInfo();
-        if (elderlyInfo != null) {
-            exportVO.setBuildName(elderlyInfo.getBuildName());
-            exportVO.setFloorName(elderlyInfo.getFloorName());
-            exportVO.setRoomName(elderlyInfo.getRoomName());
-            exportVO.setBedName(elderlyInfo.getBedName());
-        }
-
+        exportVO.setBedName(elderlyAskLeaveDO.getElderlyInfo().getBedName());
         return exportVO;
     }
 

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

@@ -103,6 +103,6 @@ public interface ElderlyInfoService {
     /**
      * 获取当前机构 otherFiles 为空的统计信息
      */
-    ElderlyOtherFilesStatisticsRespVO getOtherFilesStatistics();
+    List<ElderlyOtherFilesStatisticsRespVO> getOtherFilesStatistics(Long[] tenantIds);
 }
 

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

@@ -3195,26 +3195,31 @@ public class ElderlyInfoServiceImpl implements ElderlyInfoService {
     }
 
     @Override
-    public ElderlyOtherFilesStatisticsRespVO getOtherFilesStatistics() {
-        Long tenantId = TenantContextHolder.getTenantId();
-        ElderlyOtherFilesStatisticsRespVO respVO = elderlyInfoMapper.selectOtherFilesStatistics(tenantId);
-        if (respVO == null) {
-            respVO = new ElderlyOtherFilesStatisticsRespVO();
-            respVO.setTotalCount(0L);
-            respVO.setEmptyOtherFilesCount(0L);
-            respVO.setEmptyOtherFilesPercentage(BigDecimal.ZERO);
-        } else {
-            // 计算百分比,避免除零
-            if (respVO.getTotalCount() != null && respVO.getTotalCount() > 0) {
-                BigDecimal percentage = new BigDecimal(respVO.getEmptyOtherFilesCount())
-                        .multiply(new BigDecimal("100"))
-                        .divide(new BigDecimal(respVO.getTotalCount()), 2, RoundingMode.HALF_UP);
-                respVO.setEmptyOtherFilesPercentage(percentage);
-            } else {
+    public List<ElderlyOtherFilesStatisticsRespVO> getOtherFilesStatistics(Long[] tenantIds) {
+        List<ElderlyOtherFilesStatisticsRespVO> respVOList = new ArrayList<>();
+        for (Long tenantId : tenantIds) {
+            ElderlyOtherFilesStatisticsRespVO respVO = elderlyInfoMapper.selectOtherFilesStatistics(tenantId);
+            if (respVO == null) {
+                respVO = new ElderlyOtherFilesStatisticsRespVO();
+                respVO.setTotalCount(0L);
+                respVO.setEmptyOtherFilesCount(0L);
                 respVO.setEmptyOtherFilesPercentage(BigDecimal.ZERO);
+            } else {
+                // 计算百分比,避免除零
+                if (respVO.getTotalCount() != null && respVO.getTotalCount() > 0) {
+                    BigDecimal percentage = new BigDecimal(respVO.getEmptyOtherFilesCount())
+                            .multiply(new BigDecimal("100"))
+                            .divide(new BigDecimal(respVO.getTotalCount()), 2, RoundingMode.HALF_UP);
+                    respVO.setEmptyOtherFilesPercentage(percentage);
+                } else {
+                    respVO.setEmptyOtherFilesPercentage(BigDecimal.ZERO);
+                }
             }
+            respVO.setTenantId(tenantId);
+            respVO.setTenantName(tenantMapper.selectById(tenantId).getName());
+            respVOList.add(respVO);
         }
-        return respVO;
+        return respVOList;
     }
 
 }

+ 4 - 1
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ElderlyInfoMapper.xml

@@ -76,7 +76,7 @@
         from elderly_info ei
         LEFT JOIN elderly_contract ec ON ec.elder_id = ei.id AND ec.status = 1
         LEFT JOIN elderly_refund_settlement_order efso ON efso.elder_id = ei.id
-        where 1 = 1 and ei.deleted = 0 AND (efso.`status` != 1 OR efso.`status` is null)
+        where 1 = 1 and ei.deleted = 0
         <if test="pageVO.elderName != null and pageVO.elderName != '' ">
             and ei.elder_name like concat('%', #{pageVO.elderName}, '%')
         </if>
@@ -84,6 +84,9 @@
             and ei.elder_sex = #{pageVO.elderSex}
         </if>
         <if test="pageVO.inStatus != null">
+            <if test="pageVO.inStatus == 1">
+                AND (efso.`status` != 1 OR efso.`status` is null)
+            </if>
             and ei.in_status = #{pageVO.inStatus}
         </if>
         <if test="pageVO.buildId != null">