From 21ce122193e2fb57d206dbfca59e8d2ab2114fd0 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 23 三月 2026 17:12:56 +0800
Subject: [PATCH] 新增病区与科室组合

---
 smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java |   72 ++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
index 2b4c671..7a3878f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
@@ -8,12 +8,16 @@
 import com.smartor.domain.*;
 import com.smartor.mapper.*;
 import com.smartor.service.IHNGatherPatArchiveService;
+import com.smartor.service.IPatMedOuthospService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 
 /**
@@ -53,7 +57,7 @@
     private PatArchiveMapper patArchiveMapper;
 
     @Autowired
-    private ThreadPoolTaskExecutor taskExecutor;
+    private IPatMedOuthospService patMedOuthospService;
 
     @Autowired
     private ShardingMapper shardingMapper;
@@ -101,9 +105,62 @@
                 patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));
                 pm.setPatid(patArchives.get(0).getId());
             }
-            patMedInhospMapper.insertPatMedInhosp(pm);
+            if (!Objects.isNull(patMedInhosp.getStartInHospTime()) && !Objects.isNull(patMedInhosp.getEndInHospTime())) {
+                //鍏ラ櫌
+                pm.setInhospstate("0");
+                pm.setCreateTime(new Date());
+                patMedInhospMapper.insertPatMedInhosp(pm);
+            } else if (!Objects.isNull(patMedInhosp.getStartOutHospTime()) && !Objects.isNull(patMedInhosp.getEndOutHospTime())) {
+                //鍑洪櫌
+                pm.setInhospstate("1");
+                pm.setUpdateTime(new Date());
+                PatMedInhosp pmi = new PatMedInhosp();
+                pmi.setSerialnum(pm.getSerialnum());
+                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospList(pmi);
+                if (CollectionUtils.isEmpty(patMedInhospList1)) {
+                    pm.setCreateTime(new Date());
+                    patMedInhospMapper.insertPatMedInhosp(pm);
+                } else {
+                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());
+                    patMedInhospMapper.updatePatMedInhosp(pm);
+                }
+
+            }
         }
         return 0;
+    }
+
+    @Override
+    public Boolean hnDataGather(HnDataGatherVO hnDataGatherVO) {
+
+        LocalDate startDate = hnDataGatherVO.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate endDate = hnDataGatherVO.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+        Integer po = null;
+        // 寰幆澶勭悊姣忎竴澶�
+        for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) {
+            PatMedInhosp dailyCondition = new PatMedInhosp();
+            //澶勭悊鍏ラ櫌
+            LocalDateTime dayStart = currentDate.atStartOfDay();
+            LocalDateTime dayEnd = currentDate.atTime(23, 59, 59);
+            dailyCondition.setStartInHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));
+            dailyCondition.setEndInHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));
+            selectPatMedInhospList(dailyCondition);
+
+            //澶勭悊鍑洪櫌
+            dailyCondition.setStartInHospTime(null);
+            dailyCondition.setEndInHospTime(null);
+            dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));
+            dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));
+            selectPatMedInhospList(dailyCondition);
+
+            //澶勭悊闂ㄨ瘖
+            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
+            patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));
+            patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));
+            selectPatMedOuthospList(patMedOuthosp);
+        }
+        return true;
     }
 
 
@@ -125,10 +182,13 @@
             if (CollectionUtils.isNotEmpty(patArchives1)) {
                 patMedOuthosp1.setPatid(patArchives1.get(0).getId());
             } else {
+                if (CollectionUtils.isEmpty(patArchives)) {
+                    continue;
+                }
                 patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));
                 patMedOuthosp1.setPatid(patArchives.get(0).getId());
             }
-            i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);
+            i = patMedOuthospService.insertPatMedOuthosp(patMedOuthosp1);
         }
 
         return i;
@@ -145,6 +205,9 @@
     @Override
     public Integer selectUserList(SysUser sysUser) {
         List<SysUser> sysUserList = hnGatherPatArchiveMapper.selectUserList(sysUser);
+        if (CollectionUtils.isEmpty(sysUserList)) return null;
+
+
         log.info("sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysUserList.size());
         int i = sysUser2Mapper.batchUser(sysUserList);
         for (SysUser sysUser1 : sysUserList) {
@@ -181,7 +244,8 @@
     public Integer selectDeptList(SysDept dept) {
         List<SysDept> sysDepts = hnGatherPatArchiveMapper.selectDeptList(dept);
         log.info("selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysDepts.size());
-        int i = sysDept2Mapper.batchDept(sysDepts);
+        int i = 0;
+        if (CollectionUtils.isNotEmpty(sysDepts)) i = sysDept2Mapper.batchDept(sysDepts);
         return i;
     }
 

--
Gitblit v1.9.3