Kaynağa Gözat

优化费用清单住院天数

lighter 6 ay önce
ebeveyn
işleme
066ca5fa2a

+ 9 - 5
src/main/java/thyyxxk/webserver/dao/his/inpatient/ChargeListDao.java

@@ -22,11 +22,15 @@ public interface ChargeListDao {
             "from zy_actpatient where inpatient_no=#{patNo}")
     List<PatOverview> selectPatOverviews(String patNo);
 
-    @Select("select rtrim(inpatient_no) as patNo,admiss_times as times,rtrim(name) as name, " +
-            "rtrim(a.bed_no) as bedNo,datediff(day,admiss_date,isnull(dis_date,getdate())) as days, " +
+    @Select("select " +
+            "rtrim(inpatient_no) as patNo," +
+            "admiss_times as times," +
+            "rtrim(name) as name, " +
+            "rtrim(a.bed_no) as bedNo, " +
             "gender=(case when sex='1' then '男' when sex='2' then '女' else '未知' end), " +
             "rtrim(zk_ward) as dept,admiss_date as admdate,med_type as medtype, " +
-            "admiss_date as begndate,dis_date as enddate, " +
+            "convert(varchar(10),admiss_date,21) as begndate," +
+            "convert(varchar(10),dis_date,21) as enddate, " +
             "balance=(select ((select isnull(sum(t.depo_amount),0) from zy_deposit_file t " +
             "where t.inpatient_no=a.inpatient_no and t.admiss_times=a.admiss_times and t.status in (1,2)) + " +
             "(select sum(e.fund_pay_sumamt) from zy_ledger_file e where e.inpatient_no=#{patNo} and e.admiss_times=#{times}) - " +
@@ -55,7 +59,7 @@ public interface ChargeListDao {
     @Select("select ledger_sn from zy_ledger_file where inpatient_no=#{patNo} and admiss_times=#{times} and ledger_sn>0")
     List<Integer> selectAllLedgers(String patNo, int times);
 
-    @Select("select start_time from yz_act_order where inpatient_no=#{patNo} and admiss_times=#{times} " +
+    @Select("select convert(varchar(10),start_time,21) from yz_act_order where inpatient_no=#{patNo} and admiss_times=#{times} " +
             "and status_flag > '1' and isnull(group_no, '00')='00' and order_code in ('06026','06053','05973')")
-    Date selectActOrderDisDate(@Param("patNo") String patNo, @Param("times") Integer times);
+    String selectActOrderDisDate(@Param("patNo") String patNo, @Param("times") Integer times);
 }

+ 2 - 6
src/main/java/thyyxxk/webserver/entity/inpatient/chargelist/BriefPatInfo.java

@@ -20,12 +20,8 @@ public class BriefPatInfo {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date admdate;
     private String medtype;
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date begndate;
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date enddate;
+    private String begndate;
+    private String enddate;
     private Integer days;
     private String ledger = "全部";
     private BigDecimal balance;

+ 32 - 18
src/main/java/thyyxxk/webserver/service/inpatient/ChargeListService.java

@@ -14,10 +14,17 @@ import thyyxxk.webserver.entity.inpatient.chargelist.ChargeItem;
 import thyyxxk.webserver.entity.inpatient.chargelist.PatOverview;
 import thyyxxk.webserver.service.externalhttp.SiZySrvc;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
+import thyyxxk.webserver.utils.DateUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.Temporal;
 import java.util.*;
 
 @Slf4j
@@ -41,27 +48,34 @@ public class ChargeListService {
     }
 
     public BriefPatInfo selectBriefPatInfo(PatOverview overview) {
-        BriefPatInfo briefPatInfo = dao.selectBriefPatInfo(overview.getPatNo(),
-                overview.getTimes(), "zy_actpatient");
-        if (null == briefPatInfo) {
-            briefPatInfo = dao.selectBriefPatInfo(overview.getPatNo(), overview.getTimes(), "zy_inactpatient");
+        BriefPatInfo pat = dao.selectBriefPatInfo(
+                overview.getPatNo(), overview.getTimes(), "zy_actpatient");
+        if (null == pat) {
+            pat = dao.selectBriefPatInfo(
+                    overview.getPatNo(), overview.getTimes(), "zy_inactpatient");
         }
-        if (null != briefPatInfo) {
-            briefPatInfo.setMedtype(MedType.getName(briefPatInfo.getMedtype()));
-            briefPatInfo.setDept(redis.getDeptName(briefPatInfo.getDept()));
-            if (briefPatInfo.getDays() < 1) {
-                briefPatInfo.setDays(1);
-            }
-            if (null == briefPatInfo.getEnddate()) {
-                Date disdate = dao.selectActOrderDisDate(overview.getPatNo(), overview.getTimes());
-                if (null == disdate) {
-                    briefPatInfo.setEnddate(new Date());
-                } else {
-                    briefPatInfo.setEnddate(disdate);
-                }
+        if (null == pat) {
+            return null;
+        }
+        pat.setMedtype(MedType.getName(pat.getMedtype()));
+        pat.setDept(redis.getDeptName(pat.getDept()));
+        if (null == pat.getEnddate()) {
+            String disdate = dao.selectActOrderDisDate(overview.getPatNo(), overview.getTimes());
+            if (null == disdate) {
+                pat.setEnddate(DateUtil.formatDate(new Date(), "yyyy-MM-dd"));
+            } else {
+                pat.setEnddate(disdate);
             }
         }
-        return briefPatInfo;
+        pat.setDays(Math.abs(calculateDaysBetween(pat.getBegndate(), pat.getEnddate())));
+        return pat;
+    }
+
+    private int calculateDaysBetween(String date1Str, String date2Str) {
+        LocalDate date1 = LocalDate.parse(date1Str);
+        LocalDate date2 = LocalDate.parse(date2Str);
+        long daysBetween = ChronoUnit.DAYS.between(date1, date2);
+        return (int) (daysBetween + 1);
     }
 
     public Map<String, Object> selectChargeList(PatOverview overview) {