LAPTOP-KB9HII50\70708 10 ヶ月 前
コミット
bd06db8a5e

+ 49 - 0
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -4234,6 +4234,7 @@ public class ImService {
                "op.doctor as \"doctor\" ," +
                "op.source as \"source\"  ," +
                "op.card_no as \"cardNo\"  ," +
                "date_format(a.czrq,'%Y-%m-%d %H:%i:%S' )  AS \"consultTime\", "+
                "op.medical_state as \"medicalState\"  ," +
                "bop.status as \"payStatus1\" ," +
                "IFNULL(op.patient_cancel_value,op.doctor_cancel_value) as \"patientCancelValue\" ," +
@ -4329,6 +4330,7 @@ public class ImService {
            sql += " and a.id = '" + id + "'";
        }
        sql += " ORDER BY op.create_time desc ";
        String now = DateUtil.getStringDate();
        List<Map<String, Object>> mapList = hibenateUtils.createSQLQuery(sql, page, pagesize);
        for (Map<String, Object> map : mapList) {
            if (map.get("patientIdcard") != null) {
@ -4403,10 +4405,57 @@ public class ImService {
                    map.put("icd10Name", content);
                }
            }
            String statusTmp = map.get("status")+"";
            String endTime = map.get("endTime")+"";
            String czrq = map.get("czrq")+"";//预约时间
            String consultTime = map.get("consultTime")+"";//接诊时间
            String consultDuration = "-";//就诊时长
            String waitDuration = "-";//候诊时长
            if("3".equals(statusTmp)){
                //已结束
                consultDuration = getDifTime(endTime,consultTime);
                waitDuration = getDifTime(consultTime,czrq);
            }else if("0".equals(statusTmp)){
                //候诊中
                waitDuration = getDifTime(now,czrq);
            }else if("1".equals(statusTmp)||"2".equals(statusTmp)){
                //就诊中
                consultDuration = getDifTime(now,consultTime);
                waitDuration = getDifTime(now,czrq);
            }else if("-1".equals(statusTmp)){
                //已取消
                waitDuration = getDifTime(endTime,czrq);
            }
            map.put("consultDuration",consultDuration);
            map.put("waitDuration",waitDuration);
            //就诊时长:
            //已结束:结束时间-接诊时间;
            //就诊中:管理员进入页面的时间-接诊时间;
            //已取消、候诊中:空;
            //
            //候诊时长:
            //候诊中:管理员进入页面的时间-预约时间;
            //就诊中、已结束:接诊时间-预约时间;
            //已取消:取消时间(endTime)-预约时间
        }
        return mapList;
    }
    //计算日期相差
    public String getDifTime(String t1,String t2){
        Date d1 = DateUtil.strToDate(t1);
        Date d2 = DateUtil.strToDate(t2);
        long diff = d1.getTime()-d2.getTime();
        if(diff<=0){
            return "00:00:00";
        }
        long hours = diff / 3600;
        long remainingSeconds = diff % 3600;
        long minutes = remainingSeconds / 60;
        long seconds = remainingSeconds % 60;
        return String.format("%02d:%02d:%02d", hours, minutes, seconds);
    }
    /**
     * 查询患者所有的咨询记录总数
     * * @param doctor 患者标识